我有一个使用promise检索数据的服务:
...
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
部分吗?
问候。
如果我有足够的指示,我会添加这只是一个注释,但尝试在$http.get之前添加return .
你的服务公开了一个async函数,所以它要么需要返回一个promise.
function getData(aParam) {
return $http.get('test.json');
}
…并在控制器中解析promise。
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;
});
我无法马上解释这个"奇怪的层次结构",但这应该会让你朝着正确的方向前进。