2017-02-12 19 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のオブジェクトであり、自動的に依存関係を検出することができます。

関連する問題