는 RP Niemeyer's 솔루션을 사용할 수 있습니다, 그것은 나를 위해 일했습니다. 여기
ko.bindingHandlers.uiSortableList = {
init: function (element, valueAccessor, allBindingsAccesor, context) {
var $element = $(element),
list = valueAccessor();
$element.sortable({
containment: 'parent',
placeholder: 'placeholder',
update: function (event, ui) {
var item = ko.dataFor(ui.item[0]),
newIndex = ko.utils.arrayIndexOf(ui.item.parent().children(), ui.item[0]);
if (newIndex >= list().length) newIndex = list().length - 1;
if (newIndex < 0) newIndex = 0;
ui.item.remove();
list.remove(item);
list.splice(newIndex, 0, item);
}
});
}
};
var ViewModel = function (items) {
this.items = ko.observableArray(items);
this.data = ko.computed(function() {
return ko.toJSON(this.items());
}, this);
};
var vm = new ViewModel([ { name : 'foo' }, { name : 'bar' }, { name : 'baz' }]);
ko.applyBindings(vm);
그것이 jsFiddle 재현하는 것이 가능하다
jsFiddle 링크
이다. 나는 이것이이 상황과 같이 힘들 수 있다는 것을 안다. –
어떤 버전의 jQuery + jQuery UI를 사용하고 있습니까? –
Jquery1.7, knockout 2.2 – sivanv