2016-04-02 107 views
0

我是angularjs的新用戶,需要關於我的項目最佳方法的一些指導。
我的大部分代碼都可以工作,但是我遇到了一些問題,我的代碼並不總是按預期工作。
可能是由於一些與web服務的競爭條件。
由於web服務是從angularjs應用程序完全分離的,我沒有辦法預先種子。Angularjs,RESTful API,預加載多個服務

我使用ui.router的angular 1.5來處理請求的路由和$ http。

  1. 當我打開我的用戶頁面/應用程序/用戶時,我使用data-ng-init創建$ http.get,然後在表格上重複ng。這工作,但我有這個小的差距,而系統檢索數據。
  2. 當我點擊詳細信息按鈕時,我重定向到/ app/users /:userId。不過,我需要從多個資源加載頁面加載數據json數據,並且此步驟不時發佈數據。看起來像某種種族的情況,因爲我可以看到數據正在返回一個console.log回調。雖然我沒有在控制檯上發現錯誤。

我已經嘗試了一些解決方案,但沒有找到任何真正好的解決方案。因爲我對angularjs很陌生,我想我錯過了一些簡單的東西,需要朝正確的方向努力。

的抓取是犯了這樣的,所以很簡單的東西:

ApiService.whoami(). 
    then(
     function successCallback(response){ 
      $scope.user = response.data.data; 
      console.log(response); 

     }, 
     function errorCallback(response) { 
      SweetAlert.swal({ 
       title: "Data error", 
       text: response.data.error.message, 
       type: "warning", 
       confirmButtonColor: "#DD6B55", 
      }); 
     } 
    ); 

回答

0

你可以嘗試使用$超時延遲迴調給它的時間來獲取數據

then(
    function successCallback(response){ 
    $timeout(function() { 
     $scope.user = response.data.data; 
     console.log(response); 
    }, 1000); 
    }, 

https://docs.angularjs.org/api/ng/service/ $ timeout

+0

這個問題似乎是相反的。例如。我有一個使用select2的選擇框。如果我將我的數據加載到/ users並將其保存到$ rootState,然後切換到/ users /:userID頁面,那麼這樣做很好。如果我刷新並且數據不存在,當頁面渲染時,即使數據已被檢索,它也不能工作。 – cboxdk

+0

你可以顯示你的控制器等代碼? –