2013-02-21 3 views
7

をプロパティを追加し、は動的に私はこのようなのviewmodelを持って、観察対象物に

 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

おかげで、それ作業!簡単に理解できる解決策:) –