1

我正在使用淘汰赛-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 });
}

我知道我要问的有点奇怪,但我想知道有没有办法做到这一点?

4

2 回答 2

3

使用自定义绑定。自定义绑定内部有一个“更新”功能。当任何可观察值发生变化时,该更新函数会自动调用

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

于 2013-03-08T12:06:45.767 回答
1

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

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

您可以throttle以这种方式与您的计算一起使用。

于 2013-03-08T12:11:53.523 回答