2017-10-16 74 views
0

所以我有一個使用ui-router的角度應用程序。我有使用資源獲取數據的決心。如何等待來自資源的實際數據

app.config.js

resolve: { 
       data: function ($resource) { 

        var dataObj= $resource('/api/area/162'); 

        return dataObj.get({},function(result){ 
         return result; 
        }); 
       } 
      } 

我的控制器內調用的組件

... 

       var $ctrl = this; 
        console.log("data", $ctrl); 
... 

現在我知道,在等待數據的角度受讓人空值返回一個對象。這反過來導致組件的執行,並且我在組件控制器中結束了空數據。現在怎麼給力的角度,以等待來自服務器的數據,執行控制器

前,當我嘗試

  resolve: { 
       data: function ($http) { 

        return $http.get('/api/area/162').then(function(response) { 
         return response.data; 
        }); 

       } 
      } 

一切工作正常,之前的數據被取出的觀點並沒有加載,我可以看到數據在我的控制器中。我如何使用資源實現相同的結果?

我也曾嘗試:

app.config.js

  resolve: { 
       data: function (Data, $stateParams, $http, $resource) { 

        var object = $resource('/api/area/162'); 

        return object.get().$promise.then(function(result){ 
         return result; 
        }); 
       } 
      } 

這會返回一個錯誤:關於類似問題

stateService.ts:526 TypeError: Cannot read property 'then' of undefined 
at data (app.config.js:81) 
at resolvable.ts:120 
at angular.js:17051 
at m.$digest (angular.js:18233) 
at angular.js:18462 
at e (angular.js:6362) 
at angular.js:6642 

我已經閱讀了大部分問題在計算器上以及一些文章,包括

https://www.jvandemo.com/how-to-resolve-angularjs-resources-with-ui-router/

+0

通過在控制器內部的數據上添加$ watch,我可以在數據到達時做些事情,但是我認爲這是錯誤的,不應該這樣做 –

回答

0

的問題是我有錯版角resource.js的:/

所以,這實際上工程....

app.config.js

 resolve: { 
      data: function (Data, $stateParams, $http, $resource) { 

       var object = $resource('/api/area/162'); 

       return object.get().$promise.then(function(result){ 
        return result; 
       }); 
      } 
     } 

問題解決:P