在 AngularJS 中,我试图在 Controller 调用中将参数传递给服务工厂。但是,我似乎无法传递参数。该函数始终传递我在服务中设置为默认值的内容。如果我不包括默认值,它不会通过任何内容。
例如,我的代码类似于:
Controller
...
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”方法的参数部分,那么将调用“/room”。根本没有传递任何参数。
关于我做错了什么有什么建议吗?非常感谢!
最佳答案
尝试
services.factory('Room', ['$resource',
function($resource)
{
return $resource('/room/:room_id', {}, {
enter: {method: 'PUT', params:{room_id:'@room_id'}}
});
}
]);
编辑:
您的参数作为对象传递。因此,'@room_id'
意味着应该提取传递的对象的 room_id
属性的值。
请注意名称不能匹配。在你的 Controller 中,你也可以说
Room.enter({id: '5'}...
并获取服务中参数的值作为
..., params:{room_id:'@id'}
关于javascript - AngularJS - Controller 资源调用不将参数传递给服务工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21912731/