2013-07-08 2 views
0

Im играет с нокаутом в настоящий момент и столкнулся с проблемой с наблюдаемым массивом.нокаут не обновляется dom, когда элементы изменяются в наблюдаемом массиве

Кажется, что он не обновляет dom, когда я изменяю любые значения внутри массива. Странно то, что если я добавить новый элемент свое отражение на экране, но если я изменить значение после того, как он по-прежнему показывает исходное значение

<div data-bind="text: ObvArray().length"></div> 

<table> 
    <tbody data-bind="foreach: ObvArray"> 
     <tr> 
      <td><input data-bind="value: name"/></td> 
     </tr> 
    </tbody> 
</table> 

<button data-bind="click: addEl">Add Element</button> 

<div data-bind="foreach: ObvArray"> 
    <div data-bind="text: name"></div> 
</div> 

function MyFirstVM(){ 
    this.ObvArray = ko.observableArray([ 
     {name: "Test 1"}, 
     {name: "Test 2"}, 
     {name: "Test 3"} 
    ]); 

    this.PrintTestProp = function(){ 
     return this.TestProp(); 
    } 

    this.addEl = function(){ 
     this.ObvArray.push({name: "Another Test"}) 
    } 
} 

ko.applyBindings(new MyFirstVM()); 

Heres моя скрипка. Просто щелчок на кнопке должен добавить новый элемент. Это прекрасно работает, однако если я изменить значение в текстовые поля его не отражается в йот ниже кнопки

http://jsfiddle.net/EUC27/

ответ

1

Вы должны сделать элементы массива наблюдаемых слишком

this.ObvArray = ko.observableArray([ 
     {name: ko.observable("Test 1")}, 
     {name: ko.observable("Test 2")}, 
     {name: ko.observable("Test 3")} 
    ]); 
Смежные вопросы