我有一个包含子类的ViewModel,我希望在修改子类中的某个属性时收到通知,如下所示:
var Person = function(){
this.name = ko.observable("john doe");
this.age = ko.observable(45);
};
var ViewModel = function() {
this.Owner = ko.observable(new Person());
this.Owner().subscribe(function(){
alert("Someone updated owner");
});
};
var vm = new ViewModel();
vm.Owner().age(34);
但上面的代码不起作用......
答案 0 :(得分:2)
你可以试试这个:
var ViewModel = function() {
var self = this;
self.Owner = ko.observable(new Person());
self.test = ko.computed(function(){
ko.toJS(self.Owner);
});
self.test.subscribe(function() {
alert("Someone updated owner");
});
};
这是工作小提琴:http://jsfiddle.net/vyshniakov/hpKZj/
如果您想要实现类似isDirty
标志的内容,请阅读以下文章:http://www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html