2016-06-08 18 views
1

我有一個表與此內容:

<tbody> 
    <tr ng-repeat="result in ctrl.result track by $index"> 
     <td ng-bind="$index+1"></td> 
     <td ng-bind="::result.title"></td> 
     <td> <button type="button" class="btn" ng-click='ctrl.deleteItem(result)'>Delete</button></td> 
    </tr> 
</tbody> 

而在我的控制,我有:

vm.deleteItem = function (result) { 
     myService.deleteItem(result.id) 
      .then(function (response) { 
       vm.result.splice(result, 1); 
      }); 
    }; 

正如你看到的,如果項目被成功刪除,vm.result已更改。 現在,該項目在db中刪除,所以我們有迴應,然後該項目也從vm.result中刪除。但列表並未在瀏覽器中更新。
如您所見,我使用controller as的方法而不是$scope

+0

嗨的ID,你在你的HTML中使用vm.result因爲如果u有vm.result控制器的只有$ scope.result纔會被認爲是html的結果,所以在html –

+3

中更改vm.result,你應該嘗試從'ng-bind'中刪除'::'。因爲它不僅是隻讀數據! –

+0

@gayathri,我已經將myController設置爲ctrl。所以我用vm。在控制器和ctrl中。在html中。 – Elnaz

回答

1

嘗試刪除的項目是這樣的:

vm.result.splice(vm.result.indexOf(result), 1); 

第一Splice參數應該是元素的索引,而不是元素本身。基於從陣列test.id ID

+1

我接受了答案。但@Dhaval Marthak的評論也能幫助我。如果我沒有刪除::,它不會工作。 – Elnaz

+0

@Elnaz很高興幫助:) –

0
 var index = vm.result.findIndex(function(item) { 
       if (item.id == test.id) { 
        return true; 
       } 
      }); 

      if (index !== -1) { 
       // Removing the test from list; 
       vm.result.splice(index, 1); 
} 

檢查元素的烏爾刪除