2017-02-12 95 views
2

在KnockoutJS中,双向绑定对于foreach循环中的输入不起作用。修改文本输入不会修改量程值。这在使用foreach循环时似乎只是一个问题。KnockoutJS在foreach循环中双向绑定

<html> 
<body> 
    <table> 
    <tbody data-bind="foreach: users"> 
     <tr> 
      <td><span data-bind="text: firstName"></span></td> 
      <td><input data-bind="value: firstName" type="text"></span></td> 
      <td><span data-bind="text: lastName"></span></td> 
      <td><input data-bind="value: lastName" type="text"></td> 
     </tr> 
    </tbody> 
</table> 
<script src="js/libs/knockout-3.2.0.js"></script> 
<script> 
function User(firstName, lastName) { 
    this.firstName = firstName; 
    this.lastName = lastName; 
} 

function UserListViewModel() { 
    var self = this; 

    self.users = ko.observableArray([ 
     new User("Joe", "Schmoe"), 
     new User("James", "Ronald") 
    ]); 
} 
ko.applyBindings(new UserListViewModel()); 
</script> 
</body> 
</html> 

回答

1

只是让你User性能observable

function User(firstName, lastName) { 
    this.firstName = ko.observable(firstName); 
    this.lastName = ko.observable(lastName); 
} 

观测是可以变更的有关通知用户特殊的JavaScript对象,并能自动检测依赖关系。