Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 将jquery dragdrop添加到knockout_Jquery Ui_Knockout.js_Knockout 2.0 - Fatal编程技术网

Jquery ui 将jquery dragdrop添加到knockout

Jquery ui 将jquery dragdrop添加到knockout,jquery-ui,knockout.js,knockout-2.0,Jquery Ui,Knockout.js,Knockout 2.0,可能重复: 我正在使用敲除绑定UL。我想让用户能够拖放一个LI,让我的viewmodel随着重新排序而更新 拖放正在工作,我的jquery中有正确的事件,但我不确定如何进行更新 我找遍了文件,但什么也找不到 我制作了一把小提琴,让解释我正在做的事情变得容易一些 任何建议都会很棒 更新了jsfiddle链接我从未使用过Knockout,现在我没有时间了解它的复杂性,所以这不是一个完整的解决方案,但是。请参阅下面的链接,这些链接指向我在搜索时找到的一些页面,这些页面可能会帮助您完成解决方案 这是

可能重复:

我正在使用敲除绑定UL。我想让用户能够拖放一个LI,让我的viewmodel随着重新排序而更新

拖放正在工作,我的jquery中有正确的事件,但我不确定如何进行更新

我找遍了文件,但什么也找不到

我制作了一把小提琴,让解释我正在做的事情变得容易一些

任何建议都会很棒


更新了jsfiddle链接

我从未使用过Knockout,现在我没有时间了解它的复杂性,所以这不是一个完整的解决方案,但是。请参阅下面的链接,这些链接指向我在搜索时找到的一些页面,这些页面可能会帮助您完成解决方案

这是我从您的:

参考资料:


Ryan Niemeyer为此编写了一个淘汰插件:

以下是更新的博客条目:


小提琴中的某些东西应该是可拖动的?嘿@JMM是的,你的权利。我已经修复了链接仅供参考。。。您可以像这样重写toJSON(Knockout 2.1中新增的)self.lastSavedJson(ko.toJSON(self.questions,null,2));此插件也可能对您有所帮助:
var view_model = new ViewModel(initialData);

ko.applyBindings(view_model);

$(function() {
    $( "#sortable" ).sortable({
        revert: true,
        stop: function(event, ui) { console.log("stop event")},


        start : function ( event, ui ) {

            ui.item.data( 'previous_index', ui.item.index() );

        },
        // start


        update : function ( event, ui ) {

            var question = view_model.questions.splice(

              ui.item.data( 'previous_index' ), 1

            )[0];

            view_model.questions.splice( ui.item.index(), 0, question );

            ui.item.removeData( 'previous_index' );

        }
        // update

    });
});