【问题标题】:Knockout Js custom binding handler update dependencyKnockout Js 自定义绑定处理程序更新依赖
【发布时间】:2013-11-21 22:16:51
【问题描述】:

这篇文章: Knockout: valueAccessor vs viewModel on custom binding handlers? 对 viewModel 可观察对象如何在自定义绑定处理程序中进行绑定做出以下声明: “任何可以访问其值的 observable 都会创建一个依赖项。”

如何在自定义绑定处理程序创建使自定义绑定处理程序更新的依赖项,如果 X 是后来改了吗?

我制作了一个 Fiddle 来展示这一点。 viewModel.xxx(); 行创建了对“xxx”可观察对象的依赖。

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

【问题讨论】:

  • 如果您使用的是 KO 2.3+,那么您也可以使用viewModel.xxx.peek()
  • 这是一个更好的解决方案,无需额外代码即可工作。

标签: javascript knockout.js


【解决方案1】:

简短的回答:你不能。

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2014-06-16
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多