计算可观察的问题

时间:2013-03-08 07:57:22

标签: javascript jquery knockout.js

我正在使用knockout-2.2.0.js。我有以下型号:

function Person(name, age, city)
{
 this.Name = ko.observable(name);
 this.Age = ko.observable(age);
 this.City = ko.observable(city);

 ko.computed(function(){

   //Is there any way to execute this section whenever Name, Age, City any 
   //of this observable changes without including this.Name, this.Age and 
   //this.City inside it

 }, this).extend({ throttle: 500 });
}

我知道我在问什么有点奇怪,但我想知道有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

使用自定义绑定。自定义绑定中包含“更新”功能。当任何可观察的值发生变化时,会自动调用该更新函数

http://knockoutjs.com/documentation/custom-bindings.html

答案 1 :(得分:1)

最简单的方法是在计算中调用ko.toJS(this)。这通常用于从视图模型中构建“干净”对象。作为构建该对象的一部分,它将解开所有可观察对象(创建依赖关系)。因此,只要任何依赖项发生变化,您的计算就会被触发。

这是“脏旗”之类的基础:http://www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html

您可以以这种方式使用throttle计算。