我有一个包含子类的 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);
但是上面的代码不起作用...
最佳答案
你可以试试这个:
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");
});
};
这是工作 fiddle :http://jsfiddle.net/vyshniakov/hpKZj/
如果您想实现诸如 isDirty
标志之类的功能,请阅读以下文章:http://www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html
关于knockout.js - 具有可观察子类的 knockout ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13419050/