我试过这个:
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])
}
但我最终删除了附加到范围的所有变量和函数。我希望能够删除所有变量/数据而不是函数,因为我必须处理大量数据,这会减慢我的应用程序。
此外,请告诉我们是否有其他方法可以解决此类问题。
答案 0 :(得分:2)
使用typeof
运算符检查属性是否不是函数。您还应该检查角度$$
前缀变量,例如$$destroyed
,$$isolateBindings
等。这将返回(据我测试)仅用户定义的变量(=您已分配给$scope
的内容,仅此而已):
for (var prop in $scope) {
if (typeof $scope[prop] !== 'function' &&
prop.indexOf('$') == -1 &&
prop.indexOf('$$') == -1) {
//delete here
}
}