2013-07-08 65 views
0

我现在正在使用knockout进行游戏,并且遇到了可观察数组的问题。当可观察数组中的项发生变化时,knockout不更新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()); 

我的继承人小提琴后。只需点击buttonm应该添加一个新元素。如果我改变文本的价值领域的不会反映在按钮下方的DOM这工作然而细

http://jsfiddle.net/EUC27/

回答

1

你需要做阵列可观察的项目也

this.ObvArray = ko.observableArray([ 
     {name: ko.observable("Test 1")}, 
     {name: ko.observable("Test 2")}, 
     {name: ko.observable("Test 3")} 
    ]); 
相关问题