Angular:使用承诺时奇怪的数据层次结构



我有一个使用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;
 });

我无法马上解释这个"奇怪的层次结构",但这应该会让你朝着正确的方向前进。

最新更新