如何在淘汰赛中订阅模型中的任何更改

时间:2013-03-08 05:00:08

标签: javascript jquery knockout.js

我正在使用knockout-2.2.0.js。我在淘汰赛中有以下对象:

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


 var person = ko.observable(new Person("Tom", 23));

现在我想要的是将一个下标放在人类可观察对象上,如:

 person.subscribe(function(newValue){
 //here i want the notification whenever person object name or age change
 });

但上述订阅并没有发生这种情况。还有其他方法吗,或者我做错了什么?

修改

我知道我们可以通过对每个房产申请个人订阅来实现这一目标,但我正在寻找一般的订阅方式?

2 个答案:

答案 0 :(得分:0)

看起来您没有应用绑定,请使用 - ko.applyBindings(new Person("Tom", 23));如果您想要在更改模型时调用某些函数,那么您应该尝试'自定义绑定'Link here

ko.bindingHandlers.yourBindingName = {
    update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        // here you can call your function when some change occur in your observables
    }
};

答案 1 :(得分:0)

这是一个插件:

https://github.com/ZiadJ/knockoutjs-reactor

以下是您想要使用它的方式:

 person.watch(function(root, trigger){
     var newValue = trigger();
 });