2015-10-01 11 views
0

У меня есть функция внутри моего контроллера для ngResource создатьВыполнение кода после обратного вызова 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.

Какова эквивалентность .then для ngResource?

+0

почему бы не просто добавить код ниже 'console.log ("код после обратных вызовов")'? – levi

+0

@levi он может быть выполнен перед обратными вызовами. Обратные вызовы - асинхронный. –

+0

@levi Возможный выход: «код после обратных вызовов» «успех» при кодировании кода –

ответ

0

$resource экземпляр (в вашем случае Calculation) имеет свойство $promise, на котором вы можете использовать .then как обычно:

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

Последний пример в docs также показывает вам, как это делается.

0

Угловой ресурс $ возвращает обещание, которое вы можете использовать.

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

Calculation.create(...).then is not a function. возвращается, потому что обратные вызовы возвращают "strings" (от console.log).

Обратный звонок необходимо вернуть ответ сервера.

app.controller 'CalculationsCtrl' ($ сфера, расчет) ->

$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...} 
    ) 
Смежные вопросы