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

标签 javascript angularjs angularjs-service angular-resource

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

相关文章:

javascript - 在 AngularJS 中将不同的函数绑定(bind)到不同的选项

javascript - 带有自定义命令的 AngularJS 剑道网格包括模板不处理事件

javascript - Angular 提供者服务需要 init 函数运行一次

javascript - angularjs中的 `value`属性和 `ng-value`属性有什么区别

javascript - 如何使用Javascript缩小图像

php - AJAX-从php获取数据

javascript - 使用 Require JS 加载 js 文件

javascript - Angular ui bootstrap datepicker首先显示年份

javascript - 这是一个伪装成工厂的 AngularJS 服务吗?

javascript - 显示集合的模板在数据插入后不会自动更新