如何删除附加到scope和rootscope的所有变量而不是函数

时间:2015-12-06 16:03:23

标签: angularjs

我试过这个:

for (var prop in $rootScope) {
  console.log($rootScope[prop])
    if (prop.substring(0,1) !== '$') {
        delete $rootScope[prop];
    }
    console.log($rootScope[prop])
}

for (var prop in $scope) {
  console.log($scope[prop])
    if (prop.substring(0,1) !== '$') {
        delete $scope[prop];
    }
  console.log($scope[prop])
}

但我最终删除了附加到范围的所有变量和函数。我希望能够删除所有变量/数据而不是函数,因为我必须处理大量数据,这会减慢我的应用程序。

此外,请告诉我们是否有其他方法可以解决此类问题。

1 个答案:

答案 0 :(得分:2)

使用typeof运算符检查属性是否不是函数。您还应该检查角度$$前缀变量,例如$$destroyed$$isolateBindings等。这将返回(据我测试)用户定义的变量(=您已分配给$scope的内容,仅此而已):

for (var prop in $scope) {
   if (typeof $scope[prop] !== 'function' && 
       prop.indexOf('$') == -1 && 
       prop.indexOf('$$') == -1) {

      //delete here 

   }
}