如何在重新排序#containerLayers li

时间:2017-10-31 14:45:45

标签: javascript arrays jquery-ui jquery-ui-sortable fabricjs

所以我正在制作一个使用面料的产品 - 试图添加可排序的图层..但是我找到的每个jsfiddle示例,我都会遇到每个问题的相同问题..

问题是:在对可排序图层重新排序后,当您单击任何给定的li时,它会突出显示错误的画布对象。

如果你转到这个段落下面的链接,添加几个对象,然后重新排列li,然后点击你移动的其中一个,你可以重新创建问题..它会选择错误的对象(让我们说你添加三个图层,然后移动添加到顶部的第一个图层,然后单击顶部的li它将不会选择正确的图层,而是我认为最初存在的图层?)

https://jsfiddle.net/peLcju2h/24/

认为问题可能是在重新排列图层时objectArray数组没有更新 - 所以当选择一个时,它会从原始顺序中选择它们所在的位置?

代码中的这个区域:

`

     $("#containerLayers").sortable({
     update: function(event, ui){

     var items = $(this).children();

     items.each(function(i,item){
                 canvas.sendToBack(objectArray[item.id]);
     });
     canvas.renderAll();
     }
     });
     $("#containerLayers").disableSelection();

`

我尝试将对象数组代码放回可排序的代码区域,以便每次重新排序li时重新填充数组,但这对我不起作用..我尝试过这样的事情:

`

     var objectArray = new Array();
     var i='0';
     var objects = canvas.getObjects();

     objects.forEach(object=>{
     var thisobject = objects[i];
     i++;
     });
     objectArray.push(thisobject);

`

任何帮助都会非常感激!!! :)

0 个答案:

没有答案