2014-07-01 63 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>