我找不到将简单的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)
我尝试了很多方法来表示这一行,但无论我做什么都失败
答案 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 。
答案 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});