搜尋

首頁  >  問答  >  主體

angular.js - angularjs順序問題?

1、我在app.run()裡面通過ajax獲取用戶信息,在controller裡需要用到獲取到的用戶信息,但是我發現有時我controller裡運行的時候,app.run()裡面獲取用戶信息的ajax還沒返回,這就導致了報錯。請問有沒有好的解決方法,覺得遇到一大堆ajax時順序好亂?

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

全部回覆(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
  • 取消回覆