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



我试过这个:

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])
}

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

此外,请告诉我是否有其他方法来处理这样的问题。

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

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

最新更新