一个非常基本的问题,我在AngularJS中有一个列表或字典,其键值结构如下:
$scope.itemList = {}
此列表填充了来自JSON文件的数据,我需要做的是在某些时候清除此列表,但我不知道该怎么做,
我尝试了以下但没有奏效。
$scope.itemList.clear()
一些帮助会很棒。
注意:我说了一个列表,但实际上是我所拥有的对象因为 {},我会留下问题,有人可以思考错误 就像我一样。
答案 0 :(得分:2)
首先,使用{}
声明变量意味着对象不列出。
要清除对象,您必须重新定义它
$scope.itemList = {}
要声明您必须使用的列表
$scope.itemList = [];
清除列表
试试这个
$scope.itemList.length=0;
或重新声明它。
$scope.itemList = [];
如果您的代码需要.clear()
方法,则可以创建扩展方法
喜欢这个
Array.prototype.clear=function(){
this.length=0;
}
$scope.itemList.clear();
答案 1 :(得分:1)
在JavaScript中,对于非原始数据类型,清除和设置为 新的空值有一个非常不同的行为。
数组示例
$scope.itemList = ['A', 'B', 'C'];
var myArr = $scope.itemList;
// Setting to a new empty array,
$scope.itemList = [];
console.log(myArr); // The value is still ['A', 'B', 'C']
对象示例
$scope.itemList = {'A': 1, 'B': 2};
var myObj = $scope.itemList;
// Setting to a new empty object,
$scope.itemList = {};
console.log(myObj); // The value is still {'A': 1, 'B': 2}
请同时考虑上述示例可能会导致当前使用$scope.itemList
的变量出现问题。 (除非你不关心他们发生了什么)
这是我的建议,是真正清除数组或对象的最佳方法。
// Clear an array
$scope.itemList.splice(0, $scope.itemList.length);
// Clear an object
for (var prop in $scope.itemList) {
if ($scope.itemList.hasOwnProperty(prop)) {
delete $scope.itemList[prop];
}
}
通过这种方式,任何从$scope.itemList
分配其值的变量也将被清除。我发现这是一个很好的做法(例如angularJS中的自动填充组合框)。