搜索

首页  >  问答  >  正文

angular.js - angularjs顺序问题?

1、我在app.run()里面通过ajax获取用户信息,在controller里需要用到获取到的用户信息,但是我发现有时我controller里运行的时候,app.run()里面获取用户信息的ajax还没返回,这就导致了报错。请问有没有好的解决办法,感觉遇到一大堆ajax时顺序好乱?

曾经蜡笔没有小新曾经蜡笔没有小新2745 天前590

全部回复(4)我来回复

  • 迷茫

    迷茫2017-05-15 17:02:54

    请求数据为什么要放到run里?js一定要注意异步的问题呀。

    • 你可以在controller里ajax(建议用$http来做)请求数据,在数据回来之前,页面放个loading转圈的东西,数据来了之后就会刷新到页面上,loading隐藏。

    • 也可以用路由的resolve属性,这个是等拿到数据之后才加载页面,具体用法看路由教程吧。

    这两种方法都挺好用的,个人喜欢第一个。

    回复
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-15 17:02:54

    在router里 resovle啊

    回复
    0
  • 怪我咯

    怪我咯2017-05-15 17:02:54

    1. 可以在controller里面拿到run的时候ajax请求的promise,然后把代码写在then的回调里。

    2. 也可以在controller里watch你要的用户信息,当有值的时候再执行你的逻辑。

    回复
    0
  • 天蓬老师

    天蓬老师2017-05-15 17:02:54

    可以在run的ajax完成后定义一个变量ok标识是否success
    在controller中
    function waitOK() {

            if (ok) {
                setTimeout(function() {
                    waitOK();
                }, 100);
            } else {
                //todo....
            }

    }

    回复
    0
  • 取消回复