搜索

首页  >  问答  >  正文

javascript - Ionic中为何在app.js的.run()中用定义了全局变量,在页面的控制器中能访问到,但刷新后访问不到?

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

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

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

怪我咯怪我咯2757 天前746

全部回复(1)我来回复

  • ringa_lee

    ringa_lee2017-06-12 09:24:30

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

    1. app.config()

    2. app.run()

    3. 指令编译

    4. app.controller()

    5. 指令link

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

    回复
    0
  • 取消回复