使用键值结构清除Angularjs中的列表或字典

时间:2016-05-26 05:34:47

标签: javascript angularjs

一个非常基本的问题,我在AngularJS中有一个列表或字典,其键值结构如下:

$scope.itemList = {}

此列表填充了来自JSON文件的数据,我需要做的是在某些时候清除此列表,但我不知道该怎么做,

我尝试了以下但没有奏效。

$scope.itemList.clear()

一些帮助会很棒。

  

注意:我说了一个列表,但实际上是我所拥有的对象因为   {},我会留下问题,有人可以思考错误   就像我一样。

2 个答案:

答案 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中的自动填充组合框)