Javascript 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

在AngularJS中,我试图将控制器调用中的参数传递给服务工厂。但是,我似乎无法传递参数。函数总是传递我在服务中设置为默认值的内容。如果我不包括默认值,它不会传递任何内容

例如,我的代码类似于:

控制器

...
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函数时,他们没有指定任何类似的参数。那么这有什么不同呢?我编辑了答案以添加解释。希望有帮助。干杯