gpt4 book ai didi

javascript - AngularJS - Controller 资源调用不将参数传递给服务工厂?

转载 作者:搜寻专家 更新时间:2023-11-01 05:05:22 26 4
gpt4 key购买 nike

在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com