将复杂参数传递给AngularJs中的查询

时间:2016-03-15 20:47:03

标签: angularjs parameters angular-resource

我已经看过100个将ID传递到$ resource.get()的示例,以便从Angular中的后端查询信息。我无法找到的是如何传递一个复杂的对象。

如果我有一个要返回的对象表,并且我希望使用多个过滤器项对它们进行搜索,我需要将这些项作为参数或作为一个复杂参数传递。例如,假设我有一张人名和他们的城市,州等的表格。我希望能够说出这样的话:

var myResource = $resource(url);
myResource.get({name : "Mike", state : "Texas"});

返回可以是单行或多行。但重点是如何将参数传递给API调用?

我设置更简单的其他方法的方法是创建一个我在其中返回的存储库:

return resource('/api/broker/productionInfo/');

然后在我的API中我这样做(在[RoutePrefix(" api / broker")]设置之后:

[HttpGet]
[Route("productionInfo")]
public IHttpActionResult GetProductions()
{}

这一切都很棒但是我希望能够在存储库调用中添加搜索条件,然后在API方法中添加(即从查询字符串中提取或者然后传递它)。

2 个答案:

答案 0 :(得分:1)

如果我理解你的要求正确,你只想将其他参数传递给角度资源get请求。它就像你已经建议的一样简单:

resource.get({id: 1, custom_param_1: "param1", custom_param_2: "param2"});

这将导致http请求如下所示:

/resource/1?custom_param_1=param1&custom_param_2=param2

然后,您可以在API方面提取这些参数。

需要注意的是get次请求的最大长度,如果要为请求附加大量不同的参数,最好使用postput代替。

答案 1 :(得分:0)

GetProduction API方法中,我唯一看到您缺少的是[FromUri]装饰属性。由于Get仅支持通过查询字符串绑定的params(无正文绑定)

你的参数:

options: {
    StartDate: _startDate
    EndDate: _endDate
    TextSearch: "some search query....",
    Page: 1,
    PageSize: 25,
    et...
}

然后,从您的控制器调用您的存储库:

repository.get(options).$promise.then(function (data) {
    // data =  response payload from backend
});

reposiroty

....
    return resource('/api/broker/productionInfo/');
....

API

[HttpGet]
[Route("productionInfo")]
public IHttpActionResult GetProductions([FromUri] SearchCriteriaModel criteria) {
    ....
}

希望有所帮助。