消息关闭
    暂无新消息!

在 app.js 的 .run() 函数中用 $rootScope.obj1 = {} 预定义了全局变量,第一次启动程序时,在页面的 .controller() 函数中是能够访问到 $rootScope.obj1 的。但在浏览器上刷新页面后,该页面的 .controller() 函数中访问到的 $rootScope.obj1 却变成了 undefined。

开始以为刷新时 app.js 的 .run() 函数没有被执行,经测试发现是有执行的。但刷新时执行的顺序好像是:先执行该页面的 .controller() 函数,然后再执行 app.js 中的 .config() 函数,再然后是 app.js 中的 .run() 函数。跟第一次启动程序时不同。因为这样的先后顺序关系,故而导致了刷新页面后,在页面的 .controller() 函数中访问不到预定义的全局变量了。

请问,事实的确是这样的吗?如果是的话,又该如何解决这样的问题呢?预定义的全局变量究竟要放在哪里才好?


1个回答

︿ 0

angular.js的执行顺序大概如下:

  1. app.config()

  2. app.run()

  3. 指令编译

  4. app.controller()

  5. 指令link

很难进行你的问题判断,我猜想可能是不是因为你.js加载顺序问题呢。