2

サブクラスを保持する ViewModel があり、サブクラスのプロパティの 1 つが変更されたときに通知を受け取る必要があります。たとえば、次のようになります。

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);
​

しかし、上記のコードは機能しません...

4

1 に答える 1

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

于 2012-11-16T15:04:02.293 に答える