如何使用ngresource post返回一个promise

时间:2015-02-09 17:45:30

标签: ajax angularjs promise angular-promise ngresource

一直想弄清楚如何使用ngresource帖子返回一个承诺。我可以用$ http来做,但不能弄明白这一点。我得到了.then没有定义错误。

控制器

  $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
  });
 });

2 个答案:

答案 0 :(得分:4)

资源实例具有$promise属性,它们本身不是承诺。只需将then来电置于$promise前面。

var promise = DocumentLocation.save(model);

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

答案 1 :(得分: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

希望这可以帮到你。感谢。