2015-02-09 1 views
2

Пробовал выяснять, как вернуть обещание с сообщением ngresource. Я могу сделать это с помощью $ http, но не могу понять это. Я получаю. Then не определена ошибка.Как вернуть обещание с сообщением ngresource

Контроллер

$scope.addLocation = function (model) { 
    var model = $scope.model; 
    var promise = DocumentLocation.save(model); 

    promise.then(function success(model) { 
     console.log(model); 
     $route.reload(); 
     $rootScope.close(); 
     notificationFactory.success(); 
    }, 
    function error(error) { 
     console.error(error); 
     notificationFactory.error(); 
    } 
    ) 
}; 

завод

app.factory('DocumentLocation', function ($resource) { 
return $resource('/api/apiDocumentLocation/:id', { id: '@_id' }, { 
    get: { 
     method: 'GET', isArray: false // this method issues a PUT request 
    } 
}, { 
    stripTrailingSlashes: false 
    }); 
}); 

ответ

4

экземпляры ресурсов имеют атрибут $promise, они сами не обещает. Просто прикрепите свой then звонок с $promise.

var promise = DocumentLocation.save(model); 

    promise.$promise.then(function success(model) { 
    .... 
+1

Я думаю, что это вводит в заблуждение, так как ваше «обещание» не является обещанием. Я бы предложил изменить его на: var var = documentLocation.save (model). $ Prom ;, а затем просто выполнить 'prom.then (...' –

1

Я считаю, что вы должны вызвать .$save() вместо .save()

$scope.addLocation = function (model) { 
    var model = $scope.model; 
    var promise = DocumentLocation.$save(model); 

    promise.then(function success(model) { 
     $route.reload(); 
     $rootScope.close(); 
     notificationFactory.success(); 
    }, 
    function error(error) { 
     console.error(error); 
     notificationFactory.error(); 
    } 
    ) 
}; 

См This Link для более подробной информации.

Надеюсь, это может вам помочь. Благодарю.