RPNiemeyer の kendo-knockout ライブラリを使用しています。剣道テンプレートを含む剣道グリッドがあります。テンプレートには、viewModel を変更するメソッドを呼び出すノックアウト クリック バインディングを使用するボタンがあります。再現する手順:
- グリッドのボタンをクリックします。
- viewModel のプロパティを変更し、新しい値を通知するメソッドが呼び出されます。
- ボタンをもう一度クリックします。ボタンが機能しなくなりました。
注: ビューモデルのプロパティを変更する行を削除すると、すべて正常に動作します。
これが機能しない理由を説明してください。アイデアや解決策があれば大歓迎です。ありがとう!
html:
<div id="grid" data-bind="kendoGrid: { data: fruits, columns: [
{
field: 'name',
title: 'Fruit',
width: 50
},
{
template: '<button class=\'k-button\' data-bind=\'click: function() { changeFruit() }\' >Change Fruit Name</button>',
width: 30
}
],
scrollable: false, sortable: true, pageable: false }" style="height: 380px">
</div>
JavaScript:
var ViewModel = function() {
this.fruit1 = {
color: ko.observable("green"),
name: ko.observable("apple"),
};
this.fruit2 = {
color: ko.observable("orange"),
name: ko.observable("orange"),
};
this.fruits = ko.observableArray([
this.fruit1,
this.fruit2
]);
this.changeFruit = function() {
// this line breaks the binding,
// when You change the property of the viewModel
// You cannot call this function any more
this.fruits()[0].name("Test");
alert(this.fruits()[0].name());
}
};
ko.applyBindings(new ViewModel());