2015-09-29 109 views
0

時奇怪的數據層次我都檢索數據使用承諾服務:角:使用承諾

... 
return { 
    getData : getData 
} 

function getData(aParam) { 
    $http.get('test.json').then(function (response) { 
      return response.data; 
    }); 
} 
... 

在我的控制器,其中服務注入,我可以這樣調用我的方法:

... 
var myData = MyService.getData('foobar'); 
... 

該服務被稱爲但是當我檢查myData內容,我需要訪問它是這樣的:

myData.$$state.value.foobarArray 

問題:是否可以避免$$state.value部件?

問候。

+0

你的服務不返回任何東西,所以myData是未定義的。如果你的服務實際上'返回$ http.get(...)',那麼返回的是一個承諾。你應該使用'myData.then(function(value){...});'來訪問它的未來值 –

回答

0

如果我有足夠的pointz,我會添加它作爲評論,但嘗試在$ http.get之前添加return。

0

您服務公開異步功能,因此它要麼需要返回一個承諾..

function getData(aParam) { 
    return $http.get('test.json'); 
} 

...並解決控制器的承諾。

MyService.getData('foobar').then(function(data){ 
    var myData = data; 
}); 

或者使用一個回調函數...

function getData(aParam, callback) { 
    $http.get('test.json').then(function (response) { 
      callback(response.data); 
    }); 
} 

...從控制器傳遞英寸

MyService.getData('foobar', function(data){ 
    var myData = data; 
}); 

我無法解釋我的頭頂上的'怪異的層次',但這應該讓你朝着正確的方向前進。