ビューモデルには、プロパティがビューのコントロールにバインドされている「curRec」というオブジェクトがあります。たとえば、curRec.id、curRec.targetScore などです。
さらに、curRec には「actions」という配列型のプロパティがあります。Kendo UI で data-template を使用してアクションをレンダリングしています。
新しいレコードを curRec.actions にプッシュすると、内部で kendo がアクション「add」でイベントを 2 回起動するため、一度に 2 つの行が追加されます。一度に 1 つの行だけをプッシュしたため、配列には 1 つのレコードしか含まれません。
ここにいくつかのコードがあります:
addMore: function(e) {
e.preventDefault();
this.get("curRec.actions").push( new ActionModel({}) );
},
removeMore: function (e) {
e.preventDefault();
var action = e.data;
var index_item_to_remove = this.get("curRec.actions").indexOf(action);
this.get("curRec.actions").splice(index_item_to_remove, 1);
}
剣道コードを調べたところ、アクションが「追加」のイベントが 2 回呼び出されていることに気付きました。
ObservableArray がイベント/アクション「追加」を2回発生させる原因についてのヒントはありますか?