在app.js 的.run() 函數中用$rootScope.obj1 = {} 預先定義了全域變量,第一次啟動程式時,在頁面的.controller() 函數中是能夠存取到$rootScope .obj1 的。但在瀏覽器上刷新頁面後,該頁面的 .controller() 函數中訪問到的 $rootScope.obj1 卻變成了 undefined。
開始以為刷新時 app.js 的 .run() 函數沒有被執行,經測試發現是有執行的。但刷新時執行的順序好像是:先執行該頁面的 .controller() 函數,然後再執行 app.js 中的 .config() 函數,然後是 app.js 中的 .run() 函數。跟第一次啟動程序時不同。因為這樣的先後順序關係,故而導致了刷新頁面後,在頁面的 .controller() 函數中訪問不到預定義的全域變數了。
請問,事實的確是這樣的嗎?如果是的話,又該如何解決這樣的問題呢?預先定義的全域變數究竟要放在哪裡才好?
angular.js的執行順序大概如下:
app.config()
app.run()
指令編譯
app.controller()
指令link
很難進行你的問題判斷,我猜想可能是不是因為你.js載入順序問題。