我在网页上的表格中显示元素列表中的元素。我想确保一旦用户按下"删除数据",就会立即删除表中的元素,这样用户就不必刷新并等待查看新表。所以我现在通过从arraylist中删除元素来实现它,下面是代码:
$scope.list= function(Id) {
var position = $scope.list.indexOf(fooCollection.findElementById({Id:Id}));
fooCollection.delete({Id:Id});
if (position>-1) {
$scope.list.splice(position,1);
}
$location.path('/list');
};
但是我的位置总是-1,所以无论我删除哪个元素,总是从列表中删除最后一项。
答案 0 :(得分:0)
我发现很奇怪你我们开始在两个不同的列表上操作,所以我假设你正在获取初始列表的副本。这使我能够重现你的错误。在下一行中,您试图找到列表中不存在的对象。
var position = $scope.list.indexOf(fooCollection.findElementById({Id:Id}));
尽管我们谈论相同的内容,但这两个对象并不相同,因为:
indexOf使用strict将searchElement与Array的元素进行比较 相等(===使用的相同方法,或三等于, 操作者)。
所以你的问题就在于此。您可以在此plunker上看到此内容。
快速修复它意味着循环遍历$ scope.list并找出哪个元素实际上具有传递的id。
答案 1 :(得分:-1)
你可以使用javascript的拼接方法,它采用两个参数
arrayObject.splice(param1, param2);
param1 - >从这个索引元素将开始删除
param2 - >不会删除任何元素
就像你只想删除第一个元素而你的数组对象是arrayObject那么我们可以编写如下代码
arrayObject.splice(0, 1);