2015-05-08 46 views
0

所以我使用destroy()删除项目从我的$ scope.array单击。它工作正常,当我打开我的控制台下面是一个显示:AngularJS在控制台上显示错误时,销毁()调用

$scope.array[index].destroy is not a function 

,所以我删除此行代码中,希望它会修复控制台错误,它没有,但以后我的应用程序不能正常工作。我检查它是否是别的东西它不是它只是这个,它正在工作,但错误仍然显示。我不知道也许是因为它是旧版本?

编辑:那个叫上NG-点击全功能:

$scope.SpliceItems = function (index) 
    { 
      $scope.array.splice(index, 1); 
     } 
    $scope.DestroyItem = function(index) { 

      $scope.array[index].destroy(); 
     } 

    $scope.remove = function(item) 
    { 
    for (var i = 0; i < $scope.array.length; i++) { 
       if ($scope.array[i].Id == item.Id) {  
        $scope.SpliceItems(i); 
        $scope.DestroyItem(i); 

     } 
    } 

EDIT 2

所以,在这里什么问题?我需要与此函数动态相乘,添加或从阵列中除去时:

$scope.getTotal= function() { 
     var total = 1; 
     for (var i = 0; i < $scope.array.length; i++) { 
      total *= $scope.array[i]; 
     } 
     if (total == 1) 
      total = 0; 
     return total; 
    } 

当我使用JUST剪接它不会改变总的值,它总是乘法。当我使用splice + destory()它工作的很好,但浏览器控制台给我错误,出于某种原因。

+1

你觉得并主张实际的代码将是有益的? – dfsq

+0

好吧,这是生成控制台错误的行..但如果你坚持 – AlCode

+0

注意:如果你使用ngRepeat的$ index - 这不是一个好主意。这是为什么http://codeutopia.net/blog/2014/11/10/angularjs-best-practices-avoid-using-ng-repeats-index/ – tbutcaru

回答

2

使用splice()而不是destroy()例如为: $scope.array.splice(index, 1);

+0

看看我的编辑 – AlCode

+0

不要使用DestroyItem函数 - 它是不需要。 – Bananan

+0

做拼接从数组中删除项目? – AlCode

0

如果你想从一个数组中删除元素试试这个,

$scope.array = ['a', 'b']; 
$scope.array.splice(index,1); 
+0

会尝试,谢谢 – AlCode

+0

@Orom你不应该对数组使用'delete',永远不要。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Deleting_array_elements。检查Bananan的答案,这是你应该如何使用拼接。 – dfsq

+0

'delete'操作符删除对象属性。技术上数组也是对象,索引是属性键。然而,对于数组来说,更新“长度”也是很重要的,而'delete'不会这样做。它会导致阵列中的空白。 – dfsq

相关问题