AngularJS和Restangular:TypeError:无法读取未定义的属性'then'

时间:2016-04-05 10:40:04

标签: javascript angularjs promise restangular

我构建了一个服务,这个服务返回一个对象。但是,在我的控制器中,我不使用这个对象,因为'。然后'不起作用。

我的服务:

var getUser = function(userId) {

    Restangular.all(userId).post(JSON.stringify()).then(function(response) {
        var obj = angular.fromJson(response);
        if (!obj.isError) {
            return obj;
        }
        else {
            console.log("ERRO getUserCard");
        }
    });
};

我的控制器:

var succsess = function(data){
    welcomeScope.getUser = data;
    console.log("getUser: " + welcomeScope.getUser);
};

var error = function(){
    console.log("Erro error");
};

function loadProfile(){ 
    welcomeSvc.getUser("203831").then(success,error);
};

注意:welcomeScope是我的$范围。

2 个答案:

答案 0 :(得分:1)

你应该在函数getUser中添加return

var getUser = function(userId){
   return Restangular.all(userId).post(JSON.stringify()).then(function(response){
        var obj = angular.fromJson(response);
        if (!obj.isError) {
            return obj;
        }
        else{
            console.log("ERRO getUserCard");
        }
    });
}; 

答案 1 :(得分:0)

你的getUser()函数需要返回一个promise:

var getUser = function(userId) {

return new Promise(function(resolve, reject) {
  Restangular.all(userId).post(JSON.stringify()).then(function(response) {
    var obj = angular.fromJson(response);
    if (!obj.isError) {
        resolve(obj);
    }
    else {
        reject(console.log("ERRO getUserCard"));
    }
  })
 })
};

你可能需要通过决心,拒绝进入Restangulars承诺