带有$ scope的AngularJS http POST

Mic*_*han 0 ajax http angularjs angularjs-scope

我试图使用AngularJS做一个http帖子,但angular不会将我的$scope变量转换为JSON.

这是我的代码:

        $http({
                method: "POST",
                url: "/Account/Login",
                data: $scope
            })
Run Code Online (Sandbox Code Playgroud)

这导致请求POST消息有

"$SCOPE"
Run Code Online (Sandbox Code Playgroud)

但如果我将其更改为输出我的任何范围属性,它将发送具有正确属性的消息,例如:

        $http({
                method: "POST",
                url: "/Account/Login",
                data: { email: $scope.email, password: $scope.password }
            })
Run Code Online (Sandbox Code Playgroud)

这导致请求POST消息有

{"email":"asdasd@Asdasd.asd","password":"asd"}
Run Code Online (Sandbox Code Playgroud)

我总是要像这样包裹我的请求吗?或者有没有办法告诉AngularJS发送范围内的所有属性?任何Pro/Con?

Saq*_*eib 6

发送$ scope并不是一个好主意,它包含的内容远远超过你的email和password

您应该创建一个类似的属性$scope.user,然后将模型附加到它$scope.user.email.现在你可以使用它发送它$scope.user

$http({
     method: "POST",
     url: "/Account/Login",
     data: $scope.user
})
Run Code Online (Sandbox Code Playgroud)

一点关于 $scope

scope是一个"对象",它"绑定"到应用控制器的DOM元素.所有子元素都可以读取和修改范围数据(除非您修改新范围中的基元或它们是孤立的)

对于更多的官方文档是他们的方式