2016-04-05 6 views
0

サービスを作成しました。このサービスはオブジェクトを返します。しかし、私のコントローラでは、私はこのオブジェクトで動作しません。なぜなら、 '.then'は動作しないからです。AngularJSとRestangular:TypeError:未定義のプロパティ 'then'を読み取ることができません

マイサービス:

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は私の$スコープです。

+1

を約束'getUser'関数は、コントローラ内の' .then'が動作することを約束しなければなりません。 – bardzusny

答えて

1

あなたは機能のgetUserでリターンを追加する必要があります

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"); 
     } 
    }); 
}; 
0

あなたのgetUser()関数は約束を返す必要がある:

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に拒否

関連する問題