Knockout Js的自定义绑定处理程序更新依赖项

Knockout Js custom binding handler update dependency

本文关键字:程序 更新 依赖 处理 绑定 Js 自定义 Knockout      更新时间:2023-09-26

本文: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));
}