我需要清除所有的$scope
值,同時執行一些操作。
對於例如:如果我點擊"Signout"
按鈕重定向到"signin"
頁面,那麼所有的$範圍或$ rootScope會話值應該被清除。
我該如何做到這一點?
我需要清除所有的$scope
值,同時執行一些操作。
對於例如:如果我點擊"Signout"
按鈕重定向到"signin"
頁面,那麼所有的$範圍或$ rootScope會話值應該被清除。
我該如何做到這一點?
你可以做到以下幾點:
$rootScope = $rootScope.$new(true);
$scope = $scope.$new(true);
功能$new
正在創造一個新的作用域繼承了父變量。 true
阻止繼承。
但這不是正確的方法,因爲如果你使用上面的東西,你應該手動引導控制器功能並重新創建範圍樹。
This可能很有用,但想法是將存儲初始化數據的想法存儲在某些變量中,然後在將其分配時複製到顯示的變量中。
正確的解決方法是手動清除各範圍的每個屬性上註銷事件是這樣的: 註銷事件:
$rootScope.$emit("logout");
鳳雲事件:
$rootScope.$on("logout", function(){
$rootScope.myData = undefined;
});
或者所建議的評論,使用服務,然後進行清理。
You not want delete scope
var authScope =['authLogo','currentPath','pageTitle','app'];
for (var prop in $rootScope) {
if (prop.substring(0,1) !== '$') {
if(authScope.indexOf(prop) ==-1)
delete $rootScope[prop];
}
}
在這裏你可以找到一些方法來實現這一目標:http://stackoverflow.com/questions/13085024/reset-a-model-with-angular-js – frhd
@frhd。感謝它清楚。使用這個例子,我們可以清除特定控制器中的$ scope值。但是我想在簽出期間清除所有控制器中的所有$ scope值。可能嗎?如果是的話,給我你的建議/解決方案.. – Gnik
我不認爲有一種方法可以清除所有的範圍。如http://stackoverflow.com/a/18527334/2491198所述,您需要通知所有範圍刪除其數據。避免必須這樣做的一種方法是將數據存儲在** DataService **中,並在註銷時將其清除。 – frhd