knockout.js - 具有可观察子类的 knockout

标签 knockout.js

我有一个包含子类的 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/

相关文章:

javascript - 每当组件加载到 DOM 时,Knockout.js 回调

json - 带有嵌套 foreach 循环的 knockout.js

javascript - knockout 寄存器插入元素与其他功能

javascript - 使用javascript打印时如何在分页符时添加页眉?

knockout.js - 带 knockout 的级联 ListView

javascript - KnockoutJS - 如何在第一次渲染后通知 foreach 中的更新项目?

javascript - Knockout Observable Array 不绑定(bind) html 中的 future 元素

javascript - 如果包含字符串,则重定向 knockout js observable

unit-testing - 使用 Jasmine 进行单元测试 Knockout 绑定(bind)处理程序

knockout.js - knockout 将 View 模型重置为原始数据