Javascript AngularJS-控制器资源调用未将参数传递给服务工厂?
在AngularJS中,我试图将控制器调用中的参数传递给服务工厂。但是,我似乎无法传递参数。函数总是传递我在服务中设置为默认值的内容。如果我不包括默认值,它不会传递任何内容 例如,我的代码类似于: 控制器Javascript AngularJS-控制器资源调用未将参数传递给服务工厂?,javascript,angularjs,angularjs-service,angular-resource,Javascript,Angularjs,Angularjs Service,Angular Resource,在AngularJS中,我试图将控制器调用中的参数传递给服务工厂。但是,我似乎无法传递参数。函数总是传递我在服务中设置为默认值的内容。如果我不包括默认值,它不会传递任何内容 例如,我的代码类似于: 控制器 ... Room.enter({room_id: '5'/*$scope.room_id*/}, function(return_data) { //Callback function stuff. ... } ... 服务 ... servi
...
Room.enter({room_id: '5'/*$scope.room_id*/}, function(return_data)
{
//Callback function stuff.
...
}
...
服务
...
services.factory('Room', ['$resource',
function($resource)
{
return $resource('/room/:room_id', {}, {
enter: {method: 'PUT', params:{room_id:'-1'}}
});
}
]);
...
这样,即使我试图通过5,也会调用http资源“/room/-1”
如果删除“enter”方法的params部分,则只需调用“/room”。根本不传递任何参数
关于我做错了什么有什么建议吗?多谢各位 试试看
services.factory('Room', ['$resource',
function($resource)
{
return $resource('/room/:room_id', {}, {
enter: {method: 'PUT', params:{room_id:'@room_id'}}
});
}
]);
编辑:
您的参数将作为对象传递。因此,“@room\u id”
意味着应该提取传递的对象的room\u id
属性的值
请注意,名称不能匹配。在控制器中,您还可以说
Room.输入({id:'5'}…
并将服务中的参数值作为
..,params:{room_id:'@id'}
这很有效。注意解释一下原因吗?看看AngularJS教程,在将参数传递给资源的get函数时,他们没有指定任何类似的参数。那么这有什么不同呢?我编辑了答案以添加解释。希望有帮助。干杯