Angularjs 如何删除附加到scope和rootscope而不是函数的所有变量
我试过这个:Angularjs 如何删除附加到scope和rootscope而不是函数的所有变量,angularjs,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 (pr
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
运算符检查属性是否不是函数。您还应该检查角度$
前缀变量,例如$$destromed
,$$isolateBindings
等。这只返回(据我所测试的)用户定义的变量(=您分配给$scope
的变量,仅此而已):
为什么不创建一个或多个状态对象并将它们附加到
$rootScope
上,然后删除它们或将它们设置为{}
,而不必遍历所有作用域属性?此外,我会考虑使用服务/工厂来维护状态,并允许他们相应地清理自己。嘿,DuStWistar,听起来很有趣。但这几乎是新的。你能给我举个例子吗?没有复制粘贴的意图,但希望了解更多信息。我还将添加“hasOwnProperty”检查,以限制属性搜索条件。
for (var prop in $scope) {
if (typeof $scope[prop] !== 'function' &&
prop.indexOf('$') == -1 &&
prop.indexOf('$$') == -1) {
//delete here
}
}