javascript - 当我的变量作为 AngularJS 中的 $resource 发送时,为什么 ngModel 没有正确更新我的变量?

标签 javascript rest angularjs

这是我定义 $resource 的方式:

app.factory('User', function($resource){
    return $resource('/api/user', {}, {
        get: { method:'GET'},
        update: { method:'PUT'},
    })
})

这是我的 Controller :

function SettingsCtrl($scope, $http, User) {
    $scope.user = User.get(
        {}, //Params

        function(data) { //Successfully received data

        },
        function(data) { //Failure to receive data

        }
    );

    $scope.saveUser = function() {
        $scope.user.$update();
        console.log($scope.user);
    };
}

Controller 顶部的User.get()调用正确地从后端获取数据。在我的 HTML 中,我制作了一个调用 $scope.saveUser 函数的按钮,并使用 ng-model 创建了一些输入,并且看起来双向数据绑定(bind)工作正常。当我在 $scope.saveUser 函数中调用 console.log($scope.user) 时,它完全按照我的预期返回用户对象,并包含我在我的浏览器。但是,在我的 Node 后端,我记录了在 PUT 请求中收到的对象,并且它没有反射(reflect)我在浏览器中所做的任何更改,它看起来与原始版本相同。单击浏览器中的按钮后,数据将重置为其原始值。到底是怎么回事?为什么它不发送我在浏览器中输入的更新数据?

最佳答案

根据您的评论:

Here is console.log($scope.user) from the browser after I edited the form and hit Save (which calls saveUser):

{__v:0, _id:"50b1a966c12ef0c426000007", password:"NEW MODIFIED PASSWORD"}

And here's what Node logs as console.log(req.user):

{__v:0, _id:"50b1a966c12ef0c426000007", password:"originalPassword"})

req.user 通常是附加在请求对象上的一个对象,用于指定当前登录的用户是谁,通常由中间件管理。由于您正在执行 PUT 请求,因此您正在 req.body 中查找数据。

关于javascript - 当我的变量作为 AngularJS 中的 $resource 发送时,为什么 ngModel 没有正确更新我的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13552789/

相关文章:

javascript - TinyMCE 在编辑器中粘贴时删除 DIV - 如何?

javascript - 如何在使用 Jquery 时回显 PHP session 变量?

rest - CQRS - 通过具有即时一致性的命令发送响应

ios - RestKit RKDynamicObjectMapping 仅适用于第一个 JSON 结果

unit-testing - 如何在 AngularJS 中测试具有解析属性的 Controller ?

javascript - 无法访问 ASP.NET MVC 中 View 文件夹内的 JavaScript 文件

javascript - 如果模型为 null 或为空,如何禁用 Angular Drop Down?

javascript - 由于语法无效,服务器无法处理 PUT 请求 (ASP.NET)

c# - 使用 jQuery 调用 put 方法时出现 WCF 内部服务器错误

angularjs - Google Analytics 中的 UI 路由器状态变化跟踪