【发布时间】:2016-05-02 20:06:40
【问题描述】:
我已经在网上搜索了好几个小时!
我有一个可淘汰的可观察数组,我可以通过绑定到 jQuery 可排序来重新排列它。除了一个烦人的小错误外,一切正常。
如果我将第二个列表项拖到第一个列表项上方(不拖放),然后返回并将其放到原来的位置,然后将第一个列表项拖放到第二个和第三个之间...第二个列表项消失了!
HTML:
<ul data-bind="foreach: headers, uiSortableList: headers" class="dropdown-menu">
<li>
<span data-bind="text: title"></span>
</li>
</ul>
Javascript:
ko.bindingHandlers.uiSortableList = {
init: function (element, valueAccessor, allBindingsAccesor, context) {
var list = valueAccessor();
$(element).sortable({
axis: 'y',
update: function (event, ui) {
var item = ko.dataFor(ui.item[0]);
var newIndex = ui.item.index();
if (list.indexOf(item) != newIndex) {
ui.item.remove();
list.remove(item);
list.splice(newIndex, 0, item);
}
}
});
}
};
function ViewModel() {
var self = this;
self.headers = ko.observableArray([
{title: 'One'},
{title: 'Two'},
{title: 'Three'},
{title: 'Four'}
]);
}
var vm = new ViewModel();
ko.applyBindings(vm);
外部脚本:
https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js
https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js
https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js
【问题讨论】:
标签: jquery jquery-ui knockout.js