使用dnd-draggable创建的重复卡,如何解决?

时间:2018-02-10 09:29:36

标签: html angularjs angularjs-directive frontend

我有一个固定尺寸卡的仪表板(4)。无论何时我将任何一张卡转移到另一个位置,都会在仪表板中创建同一张卡的复制品。 现在我总共有5张卡片。如果我这样做,那么它将再次创建重复。我的目标只是将卡片移动到另一个位置而不重复。

html文件

  <div class="card" 
        ng-repeat="card in dashCtrl.cards track by $index"
         dnd-draggable="card" 
         dnd-type="'card'" 
         dnd-effect-allowed="move"
         dnd-moved="dashCtrl.updateCardPosition($index)"
         dnd-dynamic-placeholder-size="true" ng-include="'/partials/dashboard/'+card.template+'.html'">
  </div>

这里dashCtrl == dashboard_controller

信息中心控制器中的

function updateCardPosition($index) {
            // if(vm.cards.length!=4)validEntry();
            // vm.cards.splice($index, 1);
            console.log('dsdsdsdsds',$index);

            vm.cards = _.uniqBy(vm.cards,'template');
            vm.cards.forEach((ele)=>{
                console.log('xxxxxxxxxxxxxx',ele);  
            });
            // console.log("cards",vm.cards.length);
            // console.log('index',$index);
            Store.set('cards', JSON.stringify(vm.cards));
        }

这里 vm 是控制器的对象(这个),它有很多方法。 所以 vm.cards 的数组。我使用商店(用于本地存储) 存储修改后的数组(就位置而言)。

vm.cards的结构

vm.cards = [
            {template: 'agenda-card'},
            {template: 'budget-card'},
            {template: 'collaborate-card'},
            {template: 'todo-card'}
        ];

我检查了谷歌的所有内容,但我无法找到解决方案。我想重复问题可能来自 dnd-draggable 。我只是在猜测。 那么如何解决重复问题?

1 个答案:

答案 0 :(得分:0)

track by $index删除ng-repeat="card in dashCtrl.cards track by $index"