2013-02-21 48 views
7

我有一個這樣的視圖模型,動態添加屬性來觀察的對象

 function viewModel() { 
      this.loadData = function() { 
       this.Items().C = 3; 
      }; 

      this.Items = ko.observable({ A: 1}); 
      this.Items().B = 2; 
     } 

     var vm = new viewModel(); 
     ko.applyBindings(vm); 
     vm.loadData(); 

我打印出這樣的值,

 <span data-bind="text: $root.Items().A"></span> 
     <span data-bind="text: $root.Items().B"></span> 
     <span data-bind="text: $root.Items().C"></span> 

它打印出A和B的值,但不C?

謝謝。

回答

9

因爲C本身並不是最初可觀察到的,所以綁定在更改時不知道它需要更新。

要使它更新,你要麼需要完全重新Items

this.loadData = function() { 
    var existing = this.Items(); 
    existing.C = 3; 
    this.Items(existing); 
}; 

或致電觀察到的valueHasMutated功能,強制所有用戶更新,如:

this.loadData = function() { 
    this.Items().C = 3; 
    this.Items.valueHasMutated(); 
}; 
+0

感謝它工作!容易理解解決方案 – 2017-01-11 18:18:28

相關問題