いくつかの繰り返しロジックを持ついくつかのコレクション プロパティを持つビュー モデルがあります。新しい空のオブジェクトを追加し、オブジェクトを削除し、すべてのコレクションに少なくとも 1 つのオブジェクトがあることを確認する必要があります。それが唯一のオブジェクトである場合は、[削除] ボタンを無効にする必要があります。
これらの一般的な関数を抽出するために、 k を拡張しましたendo.data.ObservableArray
。
function addEmpty() {
this.push({});
}
function hasMoreThanOne {
return this.length > 1;
}
var CoolObservableArray = kendo.data.ObservableArray.extend({
init: function(data) {
kendo.data.ObservableArray.fn.init.call(this, data);
this.addEmpty = addEmpty.bind(this);
this.hasMoreThanOne = hasMoreThanOne.bind(this);
}
});
問題はhasMoreThanOne
機能にあります。単一の要素で配列を作成すると、「削除」ボタンが無効になりますが、新しい要素を追加すると有効になりません。
UI を更新するには kendo のget
関数を呼び出す必要がありますが、プロパティ名を参照するパラメーターが必要であり、これは のインスタンスごとに異なるため、 、 などのCoolObservableArray
コレクションごとに繰り返し関数を記述する必要があります。どうすれば回避できますか?それ?deleteXXXEnabled
deleteYYYEnabled
問題の再現に関するフィドルは次のとおりです。http://dojo.telerik.com/AFOMa/2