本文:Knockout:自定义绑定处理程序上的valueAccessor与viewModel?对如何在自定义绑定处理程序中绑定viewModel可观察性进行了以下声明:"任何访问其值的可观察对象都将创建依赖项。"
如何访问自定义绑定处理程序内viewModel上可观察X的值,而不创建依赖项,使自定义绑定处理器在以后更改X时进行更新?
我做了一个Fiddle来展示这一点。viewModel.xxx();
行创建了对"xxx"可观察项的依赖项。
http://jsfiddle.net/hhw4a/5/
简单回答:你不能。
可用的最佳解决方法,afaik:创建一个普通的JavaScript属性,并引用。类似这样的东西:
function Vm(){
this.aOb = ko.observable('a value');
this.a = this.aOb();
}
现在,您可以在自定义绑定中引用a
,对aOb的更改不会导致绑定重新启动。
如果你想始终与aOb保持同步,你可以使用订阅:
function Vm(){
this.aOb = ko.observable('a value');
this.a = this.aOb();
this.aOb.subscribe(function(newVal){
this.a = newVal;
}.bind(this));
}