如何将$ http请求转换为angularjs中的$ resource请求

时间:2016-06-08 07:06:04

标签: angularjs

我有这个http请求,工作正常。

控制器

$scope.removeRow = function (od){
  var temp = "order_id=" + od.order_id + "&product_id=" + od.product_id + "&variant_id=" + od.varient_id;
  var req = $http({
      method: 'POST',
      url: 'http://<domain name>/api2/v1/delete_item_in_order',
      data: temp,
      headers: {'Content-Type': 'application/x-www-form-urlencoded'}
  });

  req.then(
      function (response) {
          alert('success')
      },
      function (error) {
          //$scope.details = response.data;
          alert(error.message);
      }
  ); 
}
获取资源对象的

服务代码:

sampleApp.factory('Order', function ($resource) {
   return $resource('http://<domain name>/api2/v1/orders/:id', {id: '@_id'},    {
      'get': {method:'GET'}

    });

});

问题

如何在removeRow服务中添加自定义方法Order,以便我可以在控制器的$resource中使用$http代替$scope.removeRow()

2 个答案:

答案 0 :(得分:1)

不是返回单个函数,而是可以按照以下方式返回具有多个方法的对象

sampleApp.factory('Order', function ($resource) { 

    var removeRow = function() {console.log()};
    var getResource = function)() {
        $resource('http://<domain name>/api2/v1/orders/:id', {id: '@_id'}, { 'get': {method:'GET'} }); 
    } 

    return { removeRow : removeRow, 
        getResource : getResource
    } 
});

答案 1 :(得分:1)

无需在$ resource中指定get方法,这已经预定义了。

厂:

sampleApp.factory('Order', function ($resource) {
    return $resource('http://<domain name>/api2/v1/orders/:id', {id: '@_id'}, null}).$promise;
});

通话方式:

$scope.removeRow = function (od){
    var temp = "order_id=" + od.order_id + "&product_id=" + od.product_id + "&variant_id=" + od.varient_id;

    Order.save(temp).then(function(result){
        alert('success');
    }, function(err){
        alert(err.message);
    });
};