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

时间:2013-11-21 22:16:52

标签: javascript knockout.js

这篇文章: Knockout: valueAccessor vs viewModel on custom binding handlers?在自定义绑定处理程序中如何绑定viewModel observable: “访问其值的任何可观察对象都会产生依赖关系。”

如何从自定义绑定处理程序 中的viewModel上的observable X访问值,而 创建一个依赖项,如果X是X,则自定义绑定处理程序将更新后来换了?

我做了一个小提琴,展示了这一点。第viewModel.xxx();行创建了对“xxx”observable的依赖。

http://jsfiddle.net/hhw4a/5/

1 个答案:

答案 0 :(得分:1)

简短回答:你不能。

您可以使用的最佳解决方法,afaik:创建一个简单的vanilla JavaScript属性,并引用 。像这样:

function Vm(){
    this.aOb = ko.observable('a value');
    this.a = this.aOb();
}

现在您可以在自定义绑定中引用a,对aOb的更改不会导致绑定重新启动。

如果你想始终与aOb保持同步,你可以使用subscribe:

function Vm(){
    this.aOb = ko.observable('a value');
    this.a = this.aOb();

    this.aOb.subscribe(function(newVal){
       this.a = newVal;
    }.bind(this));
}