アイテムにjQueryのドラッグアンドドロップが必要だったのと同じような問題がありました。私の解決策は、knockoutjsテンプレートを使用して、beforeRemoveイベントとafterAddイベントをモデルにバインドすることでした。個人クラス/関数も単純なノックアウトビューモデルです。
以下の例では、.draggable()を使用していますが、検証を簡単に使用できます。observableArrayを操作するための独自のコードを追加すれば、準備は完了です。
HTML:
<div data-bind="template: {foreach:attendeesToShow, beforeRemove:hideAttendee, afterAdd:showAttendee}">
<div class="person">
<img src="person.jpg" alt="" />
<div data-bind="text: firstName" ></div>
<div class="deleteimg" data-bind="click:$parent.removeAttendee" title="Remove"></div>
</div>
</div>
ViewModel:
var ViewModel = function () {
var self = this;
var at = [new Person('First', 'Person', 'first@example.com'),
Person('Second', 'Person', 'second@example.com')
];
self.attendees = ko.observableArray(at);
self.removeAttendee = function (attendee) {
self.attendees.remove(attendee);
};
this.showAttendee = function (elem) {
if (elem.nodeType === 1) {
$(elem).hide().show("slow").draggable();//Add jQuery functionality
}
};
this.hideAttendee = function (elem) {
if (elem.nodeType === 1) {
$(elem).hide(function () {
$(elem).remove();
});
}
};
};
ko.applyBindings(new ViewModel());