剑道可排序小部件mvvm UI故障

剑道可排序小部件mvvm UI故障,mvvm,kendo-ui,kendo-mvvm,kendo-sortable,Mvvm,Kendo Ui,Kendo Mvvm,Kendo Sortable,我正在使用kendo的mvvm和sortable小部件,允许用户对绑定了数据的多个表进行排序。我已经实现了以下代码。它可以工作,但是数据似乎正确地记录到了控制台。但是,UI中的数据会跳转 $(".sortable-handlers").kendoSortable({ handler: ".move", hint:function(element) { return element.clone().addClass("sortable-hint"); },

我正在使用kendo的mvvm和sortable小部件,允许用户对绑定了数据的多个表进行排序。我已经实现了以下代码。它可以工作,但是数据似乎正确地记录到了控制台。但是,UI中的数据会跳转

$(".sortable-handlers").kendoSortable({
    handler: ".move",
    hint:function(element) {
        return element.clone().addClass("sortable-hint");
    },
    change: function(e) {
        var services = viewModel.get("services");
        console.log(e.oldIndex);
        var oldIndex = e.oldIndex;
        var newIndex = e.newIndex;

        services.splice(newIndex, 0, services.splice(oldIndex, 1)[0]);

        //Set it back to the original list
        viewModel.set("services", services);

        console.log(JSON.stringify(viewModel.get("services")));

    }
});

这已经有很长一段时间了,但是添加
.trigger(“change”)
对我来说很有效(我使用的是jquery ui排序表,而不是kendo ui排序表)

//使用依赖方法定义模型
var MyModel=kendo.data.Model.define({
字段:{
左:“数字”,
右:“数字”
},
总计:函数(){
返回这个。得到(“左”)+这个。得到(“右”);
}
});
//创建视图模型
var viewModel=kendo.observable({
项目:[]
});
//绑定
bind($(“#myView”),viewModel);
//列表更改时使用$.ui.sortable
var超时=null;
viewModel.items.bind(“更改”,函数(e){
clearTimeout(超时);
timeout=setTimeout(函数(){
$(“#可排序”)。可排序({
更新:功能(e、ui){
//获取排序目标的UID
var targetUid=ui.item.attr(“uid”);
//上榜
var beforeIndexes=u0.map(viewModel.items,0.iteratee(“uid”);
//目标的原始索引
var fromIdx=\ u0.indexOf(在索引之前,targetUid);
//列在后面
var afterIndexes=$(“#可排序”).sortable(“toArray”{
属性:“uid”
});
//目标公司的新指数
var toIdx=u0.indexOf(afterIndexes,targetUid);
var changeItem=viewModel.items[fromIdx];
viewModel.items.splice(来自IDX,1);
if(toIdx>=viewModel.items.length){
viewModel.items.push(changeItem);
}否则{
viewModel.items.splice(toIdx,0,changeItem);
}
//刷新
viewModel.items.trigger(“更改”);
}
});
}, 500);
});
//将一些项目添加到列表中
viewModel.items.push(新MyModel({
左:1,,
右:2
}));
viewModel.items.push(新MyModel({
左:6,,
右:3
}));
viewModel.items.push(新MyModel({
左:5,,
右:7
}));

可恶的
不可排序
+
=