2014-07-01 82 views
2

我有一堆行通過foreach綁定進行更新。而且我還有一個自定義敲除綁定(基於jQuery UI可排序),允許使用拖放對這些行進行重新排序。jQuery UI可排序後敲除foreach綁定不起作用

<tbody data-bind="foreach: serviceTemplates, draggableList: null"> 
    <tr>...</tr> 
</tbody> 

ko.bindingHandlers.draggableList = { 
    init: function (element, valueAccessor, allBindings, viewModel, bindingContext) { 
    var panelList = $(element); 
    panelList.sortable(); 
    } 
}; 

行可以被刪除。只有當我沒有移動這一行時,它纔有效。我不懂爲什麼。 jQuery UI在移動時移除並添加DOM元素嗎?

Example

+6

您應該使用,而不是寫自己的... – nemesv

+0

如果你還沒有已經看到了這一點,這對[敲除排序(https://github.com/rniemeyer/knockout-sortable)插件是關於使用knockout進行排序的經典博客文章http://www.knockmeout.net/2011/05/dragging-dropping-and-sorting-with.html – John

回答

0

嘗試knockout-sortable。您所要做的就是將knockout-sortable.js文件包含在您的項目中,並用sortable替換foreach

<tbody data-bind="sortable: serviceTemplates, draggableList: null"> 
    <tr>...</tr> 
</tbody>