$ resource url中的查询字符串

ako*_*nsu 35 angularjs

由于运行经典ASP的服务器的限制,我的服务必须使用查询字符串:

angular
  .module('myServices', ['ng', 'ngResource'])
  .factory('Item', ['$resource',
     function ($resource) {
         return $resource('/api/?p=item/:id');
     }]);
Run Code Online (Sandbox Code Playgroud)

我想为它添加额外的查询字符串参数:

Item.query({test: 123}, on_success, on_error);
Run Code Online (Sandbox Code Playgroud)

但结果网址是

/api/?p=item?test=123
Run Code Online (Sandbox Code Playgroud)

显然有一个错误,但如何绕过它呢?

编辑:在https://github.com/angular/angular.js/issues/1511提交

Har*_*rev 68

您可以使用资源参数.如果未在路径中指定占位符,则会自动将它们转换为查询字符串参数.像那样:

angular
    .module('myServices', ['ng', 'ngResource'])
    .factory('Item', [
         '$resource',
         function ($resource) {
             return $resource('/api');
     }]);

Item.query({p: 'item/1'});
Run Code Online (Sandbox Code Playgroud)

这将导致请求/api?p=item/1.

PS

我想你已经知道了,但你不喜欢它.但我仍然认为这是你的正确方法.考虑到您正在处理该后端的错误API设计,您可以使用另一个为您执行此操作的服务包装AngularJS资源.

  • 好例子.我希望这是在Angular教程中.所有参数都在其资源示例中进行了硬编码. (3认同)