我有一些基本的角代碼斂導航菜單爲登錄和註銷的用戶,並存儲在菜單$localStorage
然後將它們切換到$rootScope
當輸入/輸出等右側分配 - 這怎麼可能?
下面在用戶登錄就是一個簡化版本代碼爲這個問題的目的。
看起來好像其中一行代碼實際上會導致左側被分配到右側。
$localStorage.navigation = {};
$rootScope.nav = {};
// save the nav menus in local storage
$localStorage.navigation.loggedIn = "nav menu json";
// use local storage to set the rootscope
$rootScope.nav = $localStorage.navigation;
/* should be..
$rootScope.nav = {loggedIn:'nav menu json'};
$localStorage.navigation = {loggedIn:'nav menu json'};
*/
// set the nav menu - Right-hand-assignment???
$rootScope.nav.current = $localStorage.navigation.loggedIn;
/* should be..
$rootScope.nav = { loggedIn:'nav menu json', current: 'nav menu json' };
$localStorage.navigation = { loggedIn:'nav menu json' };
*/
console.log($rootScope.nav.current); // 'nav menu json' as expected
console.log($localStorage.navigation.current); // 'nav menu json', WHAT??!!
/* actually..
$rootScope.nav = { loggedIn:'nav menu json', current: 'nav menu json' };
$localStorage.navigation = { loggedIn:'nav menu json', current: 'nav menu json' };
*/
在這裏發生了什麼?
這個'$ rootScope.nav = $ localStorage.navigation;'傳遞一個對象引用...覆蓋最初的空對象。 –