在 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加载顺序问题呢。