在回调ngResource之后执行代码

时间:2015-10-01 15:40:22

标签: javascript ruby-on-rails angularjs angularjs-rails

我的控制器中有ngResource创建

的功能
app.controller 'CalculationsCtrl', ($scope, Calculation)->

  $scope.save = ()->
    $scope.busy = true
    Calculation.create($scope.calculation,
      (successResult)->
        console.log ("sucess")
      , (failResult)->
        console.log ("failrue")

    console.log("code after callbacks")
    $scope.busy = false

我想在console.log("code after callbacks")回调执行后执行.create以下的代码。

我尝试使用.then但似乎ngResource不支持它。

Calculation.create(...).then is not a function

ngResource .then的等效性是什么?

3 个答案:

答案 0 :(得分:0)

$resource个实例(在您的情况下为Calculation)有一个属性$promise,您可以像往常一样使用.then

Calculation.create($scope.calculation).then(function (response) {
    ...
});

docs中的最后一个示例也向您展示了它是如何完成的。

答案 1 :(得分:0)

Angular $ resource返回一个你可以使用的承诺。然后再使用。

Calculation.create().$promise.then( function( response ) {
    console.log("success");
}, function( error ) {
    console.log("error");
);

答案 2 :(得分:0)

返回

Calculation.create(...).then is not a function.,因为回调返回"strings"(来自console.log)。

回调需要o返回服务器响应。

app.controller' CalculationsCtrl',($ scope,Calculation) - >

  $scope.save = ()->
    $scope.busy = true
    Calculation.create($scope.calculation,
      (successResult)->
        console.log ("sucess")
        successResult
      , (failResult)->
        console.log ("failrue")
        failResult
    ).$promise.then(
       function(succes){$scope...}, 
       function(fail){$scope...}
     )