javascript - ngResource 不传递参数 - 如何调试?

标签 javascript angularjs rest angular-resource

我有以下资源定义:

myservices.factory('User', ['$resource',
    function($resource){
        return $resource('/user/:screenName', {}, {
            whoami: {
                url: '/user',
                method: 'GET',
                isArray: false,
                params: {
                    op: 'whoami'
                }
            },
            query: {
                url: '/user',
                method: 'GET',
                isArray: true
            },
            get: {
                method: 'GET',
                isArray: false
            },
            update: {
                method:'GET',
                params: {
                    op: 'update'
                },
                isArray: false,
            },
            delete: {
                method:'GET',
                params: {
                    op: 'delete'
                },
                isArray: false,
            }

        });
    }]);

我认为它会将 screenName 作为 URL 的一部分传递。不幸的是,这不会发生。

Controller 代码如下:

            var user = new User();
            user.firstname = $scope.selectedUser.firstName;
            user.lastname = $scope.selectedUser.lastName;
            user.screenName = $scope.selectedUser.screenName;
            user.password1 = $scope.selectedUser.password1;
            user.password2 = $scope.selectedUser.password2;
            user.roles = $scope.selectedUser.roles;
            user.maximalCalories = $scope.selectedUser.maximalCalories;

            user.$update();

实际上它通过了:

GET http://localhost:8080/user?op=update HTTP/1.1
Host: localhost:8080
...
Accept: application/json, text/plain, */*
...
Referer: http://localhost:8080/app/index.html

即除了显式参数外,它不传递任何参数。

更新

如果我这样做

    User.$update(
                {
                    firstname : $scope.selectedUser.firstName,
                    lastname : $scope.selectedUser.lastName,
                    screenName : $scope.selectedUser.screenName,
                    password1 : $scope.selectedUser.password1,
                    password2 : $scope.selectedUser.password2,
                    roles : $scope.selectedUser.roles,
                    maximalCalories : $scope.selectedUser.maximalCalories,
                }
            );

我得到一个异常TypeError: User.$update is not a function

更新 2

显然,Angular 向对象添加了函数 $update,向类添加了函数 update,如果我在 LHS 处有对象,它将仅通过 POST...

最佳答案

您没有将 screenName 传递给资源。应该是:

user.$update({screenName: $scope.selectedUser.screenName});

关于javascript - ngResource 不传递参数 - 如何调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34578353/

相关文章:

javascript - 无法使用socket.io在nodejs服务器和客户端之间通信我的数据

javascript - 重新编译 build.py 文件时缺少 goog.date 的提供程序 - google blockly

javascript - 尝试在 https ://api. thetvdb.com/向 TVDB REST API 发出 JSON POST 请求,但收到 CORS 错误

javascript - Angular .js :117 RangeError: Maximum call stack size exceeded

web-services - REST URI 设计 : how update

javascript - 向所有监听器调度事件

javascript - 为 Javascript 的 Ext.container.Viewport 添加滚动条到左侧面板

javascript - JSON 返回 Object 对象

java - 启动 Grizzly Web 服务器的最佳方式是什么?

c - 在 libcoap coap 服务器 GET 响应处理程序中如何访问 URI 的查询添加项?