【问题标题】:How to delete all entries from list?如何从列表中删除所有条目?
【发布时间】:2015-12-22 10:23:49
【问题描述】:
我正在尝试使用 Angular js 从列表中删除所有条目。我有两个指令,我在两个使用共享服务的指令之间进行通信。我可以在我的列表中添加条目。
我想在单击删除按钮时删除我的列表。我清空了我的阵列,但我在服务时清空了我的阵列,因此它不会反映在我的视图中。如何清空我的清单?
这是我的代码
https://jsfiddle.net/8fjhLqnw/4/
我就这样删除
vm.delete = function() {
vm.data = [];
}
这并没有反映我的观点
【问题讨论】:
标签:
angularjs
angularjs-directive
angularjs-scope
angular-ui-router
【解决方案1】:
要从 Angularjs 的列表中删除所有条目,您可以执行以下操作
$scope.students.splice( $scope.students.indexOf(student), 1);
【解决方案2】:
使用vm.data.length = 0; 清除数组。如果您分配一个新数组,它将不会绑定到视图。
【解决方案3】:
试试这个:
vm.delete = function() {
vm.data.length = 0;
}
因为您使用f.data = sharedData.data 将数据放入控制器的范围内,所以将共享相同的数组实例,因此在sharedData.data 上的修改将在f.data 上看到,因为它们是相同的。
通过sharedData.data = [],您将数组的一个新实例分配给sharedData.data。
从那时起,f.data 和sharedData.data 是独立的实例,对sharedData.data 所做的任何修改都不会影响f.data。
解决此问题的另一种方法:
.controller('f', function($scope, sharedData) {
this.data = sharedData; // and not this.data = sharedData.data
})
并将数据引用为f.data.data。这样您就可以放入新的数组实例,因为您可以通过sharedData 直接访问它。