如何将数据从控制器传递到服务?

时间:2016-11-10 03:16:45

标签: angularjs

我有一个带有函数的Angular服务:

// service.js

function DoSomething($resource) {
  var resourceUrl = 'right/here';
  return $resource(resourceUrl, {},  {
    'action': {
      method: 'POST'
    }
  });
}

和一个带有2个参数的@RestController(param1,param2)。

当我使用这样的服务时:

// service.js

function DoSomething($resource) {
  var resourceUrl =  'right/here';

  return $resource(resourceUrl, { param1: "abc", param2: "def" },  {
    'action': {
      method: 'POST'
    }
  });
}

工作正常。但是当我想从我的控制器传递这些值时,就像这样:

// controller.js

DoSomething.action(
  { param1: "abc" },
  { param2: "def" }
);

虽然服务部分仍为空

// service.js

return $resource(resourceUrl, {},  {

我的@RestController只收到一个值 - 左起第一个。怎么解决这个问题?

2 个答案:

答案 0 :(得分:1)

使用$resource(resourceUrl, {}, {,您可以从控件中传递参数,如下所示

//controller.js

DoSomething.action({}, {param1: "abc", param2: "def"});

答案 1 :(得分:0)

由于action方法是POST。需要一个数据对象。

var paramObj = {param1: value1, param2: value2};
var dataObj = {};

DoSomething.action(paramObj, dataObj);

paramObj定义的参数作为查询参数附加:

resourceUrl + "?param1=value1&param2=value2"

dataObj被编码为JSON字符串并放在POST的主体中。

如果仅使用一个参数调用操作方法(POST):

DoSomething.action(dataObj);

$ resource服务将dataObj字符串化并将其放在POST的主体中。 URL参数取自$ resource。

定义的默认值