angularjs – Angular TypeError:无法读取未定义的属性’then’

前端之家收集整理的这篇文章主要介绍了angularjs – Angular TypeError:无法读取未定义的属性’then’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个这样的数据服务:
this.myFunction= function(callback) {
    var url = rootURL + "path1/path2/service.json";
    var promise = $http.get(url);
    promise.then(function(payload){
        return callback(payload); 
    });
    return promise; 
}

在控制器中调用它来初始化一些东西:

DataService.myFunction(function(data) { 
    if(data.statusText !== "OK"){
        $scope.$worked= false; 
    }else{  
        $scope.$worked= true;               
    }
}

并且我得到“TypeError:无法读取属性’然后’undefined”.回调中的Console.log(数据)显示200“OK”响应和我期望的数据.我已经搜索了这个错误,主要是因为没有退回服务中的承诺.但是,我退回了承诺.在回调中设置控制器范围上的任何内容会导致错误.

Angular版本:AngularJS v1.3.0-rc.2

谢谢!

在这种情况下,您不需要返回承诺,因为您正在使用回调.回调和承诺是频谱的两端.你可以用这个完成你想要的.

如果要使用回调,可以留下您的控制器代码.

this.myFunction= function(callback) {
    var url = rootURL + "path1/path2/service.json";
    $http.get(url).then(function(response) {
        callback(response.data);
    });
}

或者如果你想利用这些承诺

this.myFunction= function() {
    var url = rootURL + "path1/path2/service.json";
    return $http.get(url).then(function(response) {
        return response.data;
    });
}

DataService.myFunction().then(function(data) { 
    if(data.statusText !== "OK"){
        $scope.$worked = false; 
    } else {  
        $scope.$worked = true;               
    }
});

猜你在找的Angularjs相关文章