Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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 带敲除的可观测数组排序问题_Jquery_Twitter Bootstrap_Sorting_Knockout.js - Fatal编程技术网

Jquery 带敲除的可观测数组排序问题

Jquery 带敲除的可观测数组排序问题,jquery,twitter-bootstrap,sorting,knockout.js,Jquery,Twitter Bootstrap,Sorting,Knockout.js,当使用引导面板组作为手风琴时,我在显示可观察数组时遇到问题,但是当显示为无序列表时,相同的列表会正确显示,按排序器值排序。“排序”按钮用于模拟从服务器返回的数据,无需手动对任何面板进行排序,您可以按此按钮并按预期更新列表。手动排序面板后,按下“排序”按钮后,面板将不再正确排序,但无序列表将继续正确排序 关于我做错了什么导致引导面板在手动排序后无法正确显示,有什么建议吗 $(函数(){ 应用绑定(新的schedulerViewModel(新的ViewModel()); }); 功能组(id、排序

当使用引导面板组作为手风琴时,我在显示可观察数组时遇到问题,但是当显示为无序列表时,相同的列表会正确显示,按排序器值排序。“排序”按钮用于模拟从服务器返回的数据,无需手动对任何面板进行排序,您可以按此按钮并按预期更新列表。手动排序面板后,按下“排序”按钮后,面板将不再正确排序,但无序列表将继续正确排序

关于我做错了什么导致引导面板在手动排序后无法正确显示,有什么建议吗

$(函数(){
应用绑定(新的schedulerViewModel(新的ViewModel());
});
功能组(id、排序器、名称){
var self=这个;
self.id=ko.可观察(id);
self.sortOrder=ko.可观察(sortOrder);
self.name=ko.observable(名称);
};
函数ViewModel(){
var self=这个;
self.groups=ko.array([
新组(3,0,‘系统组’),
新组别(27,1,‘新增组别’),
新组(1,2,‘A组’),
新组(2,3,‘B组’)
]);
};
ko.bindingHandlers.uiSortableList={
init:函数(元素、valueAccessor、allBindingAccessor、上下文){
变量$element=$(element),
list=valueAccessor();
$element.sortable({
轴:‘y’,
手柄:“#面板手柄”,
停止:功能(事件、用户界面){
var newIdOrder=$(this.sortable('toArray');
updateWorkgroupsSortOrder(newIdOrder);
context.sortWorkgroups();
}
});
}
};
函数schedulerViewModel(视图模型){
var self=这个;
self.comments=ko.observearray([]);
self.workgroups=ko.observearray(viewModel.groups());
self.sortWorkgroups=函数(){
self.workgroups.sort(函数a,b){
var aSortOrder=a.sortOrder(),
b排序顺序=b.sortOrder(),
结果=0;
结果=parseInt(aSortOrder)-parseInt(bSortOrder);
返回结果;
});
};
自我计数=可观察到的ko(0);
self.sortButton=函数(){
变量数组;
self.count(Math.floor((Math.random()*10));
if(self.count()==0){
数组=[27,2,3,1];
}else if(self.count()==1){
数组=[3,27,1,2];
}else if(self.count()==2){
数组=[1,3,2,27];
}else if(self.count()==3){
数组=[3,2,27,1];
}else if(self.count()==4){
数组=[2,1,27,3];
}else if(self.count()==5){
数组=[1,27,3,2];
}else if(self.count()==6){
数组=[2,3,1,27];
}else if(self.count()==7){
数组=[27,1,3,2];
}else if(self.count()==8){
数组=[3,1,27,2];
}else if(self.count()==9){
数组=[1,2,27,3];
}否则{
数组=[27,3,2,1];
}
self.updateWorkGroupsOrderor(数组);
self.sortWorkgroups();
};
self.updateWorkgroupsSortOrder=函数(工作组ID){
self.comments.push(工作组ID);
对于(var i=0;i
#面板手柄{
浮动:左;
明确:两者皆有;
位置:相对位置;
显示:内联块;
排名:0;
左:0;
颜色:灰色;
高度:37像素;
背景色:#F5;
-webkit边界半径:3px;
-moz边界半径:3px;
边界半径:3px;
右边框:实心1px#ddd;
光标:移动;
右边距:8px;
}
#面板手柄i{
填充:11px 4px;
}

排序()

解决方案是修改可排序停止方法,如下所示:

stop: function(event, ui) {
    var item = ko.dataFor(ui.item[0]);
    var position = ko.utils.arrayIndexOf(ui.item.parent().children(), ui.item[0]);
    if (position >= 0) {
        list.remove(item);
        ui.item.remove();
        list.splice(position, 0, item);
    }
    var newIdOrder = $(this).sortable('toArray');
    context.updateWorkgroupsSortOrder(newIdOrder);
}