如何将get参数传递给angularJ中的ngResource

时间:2016-10-25 07:09:22

标签: javascript angularjs

我找不到将简单的id参数传递给我创建的资源的方法。

服务是:

angular.
  module('shared.testUser').
  factory('TestUser', ['$resource',
    function($resource) {
      return $resource('http://127.0.0.1:4001/api/testusers/:id', {id:'@userid'});
    }
  ]);

使用它的组件和控制器是:

angular.
  module('logIn').
  component('logIn', {
  	templateUrl: 'log-in/log-in.template.html',
	controller: ['TestUser', function LogInController(TestUser) {
		self = this;
      	self.testUserSet = TestUser.query();
      	self.oneUser = TestUser.get({userid:3});
      	self.testVar = 20;
  	}]
  });

目前,当我尝试在self.oneuser行上运行此错误时,出现错误。

  

错误:$ resource:badcfg
  响应与配置的参数
不匹配   操作get的资源配置出错。包含一个对象但得到一个数组的预期响应(请求:GET http://127.0.0.1:4001/api/testusers

我尝试了很多方法来表示这一行,但无论我做什么都失败

2 个答案:

答案 0 :(得分:0)

使用$ resource函数定义中的相同标识符。

因为你有这个:

return $resource('http://127.0.0.1:4001/api/testusers/:id', {id:'@userid'});

发送参数时,您的组件应绑定为{id:1234}。

请注意,我将标识符从userid更改为id(这是您在$ resource中定义自己的参数的方式。您不必与Angular或您自己搏斗以使其正常工作,只需获取惯例)。

对于此语法,没有在get请求中传递正文。 https://docs.angularjs.org/api/ngResource/service/$resource中定义的并且在语法定义/用法正下方的示例中解释的params意味着绑定到$ resource中您创建的占位符 不要混淆$ http和$ resource

My working plunk for your reference

答案 1 :(得分:0)

$resource的第二个参数定义参数的默认值:

app.factory('TestUser', ['$resource',
    function($resource) {
        return $resource('testusers.json/:id', {id:'default'});
    }
]);

要覆盖GET操作中的默认值,请使用参数名称:

app.controller('MainCtrl', function($scope, TestUser) {

    var vm=$scope;

    vm.testUserSet = TestUser.query();
    vm.oneUser = TestUser.get({id:3});

DEMO on PLNKR