2015-12-16 72 views
0

我在我的控制器中做了一个删除功能,但它不能正常工作。它总是删除数组表中的最后一个对象。可能是什么问题?如何从表格中正确删除一个对象?

谢谢!

app.js

table.controller('TodoCtrl', function ($scope, $http, $localStorage) { 
    $scope.$storage = $localStorage.$default({ 
     "extraTodo": [], 
     "todos":[ 
      { "id":1,"text":"learn AngularJS", "color":"red", "progress":30}, 
      { "id":2,"text":"build an AngularJS app", "color":"blue", "progress":30}, 
      { "id":3,"text":"learning Python", "color":"red","progress":70}, 
      { "id":4,"text":"build an Python app", "color":"blue", "progress":80}, 

     ] 

    }); 

    $scope.extraTodoData = $localStorage.extraTodo; 
    $scope.todoData = $localStorage.todos; 

    $scope.Delete = function (del) { 
     console.log(del); 
     var result = confirm('Are you sure?'); 
     if (result === true) { 
      var index = getSelectedIndex(del); 
      del.splice(index, 1); 
     }; 
    }; 

    function getSelectedIndex (del) { 
     console.log(del); 
     for(var i = 0; i < del.length; i++) 
      if(del[i].id == del) 
       return i; 
      return -1; 
    }; 

的index.html

 <button class="btn btn-danger btn-sm ng-scope" ng-click="Delete($storage.extraTodo)"><span class="glyphicon glyphicon-trash"></span></button> 
     <button class="btn btn-danger btn-sm ng-scope" ng-click="Delete($storage.todos)"><span class="glyphicon glyphicon-trash"></span></button> 
+0

是否要删除'del'指定的对象? 'del'是一个id还是一个索引? – Lucas

+0

你错过了getSelectedIndex函数的循环中的括号 – TonalLynx

+1

'if(del [i] .id == del)'这特别令人困惑...... – Lucas

回答

1

假设要根据ID从todos删除对象,你可以做一个函数,它的ID作为参数,然后删除具有该ID的任何对象。使用你的命名和假设todos是无论你正在使用:

$scope.Delete = function(id) { 
    todos = todos.filter(function(item) { 
     return item.id !== id; 
    }); 
} 
0

它会删除对象(例如:DEL)从$范围$存储。

$scope.Delete = function (del) { 
     var result = confirm('Are you sure?'); 
     if (result === true) { 
      var index = $scope.$storage.indexOf(del); 
      $scope.$storage.splice(index, 1); 
     }; 
    }; 
相关问题