AngularJS成功PUT,然后是不需要的GET

时间:2014-12-23 16:08:05

标签: javascript angularjs put

总之,在我的AngularJS页面中,我PUT并收到答案。现在,Angular正在做一些事情,将表单字段放在URL中并执行相当于GET的内容。

详细说明,我的表格如下:

<body ng-app="userApp">
  <div ng-controller="userController">
  <form id="userForm" modelAttribute="userAttribute" action="">
      <table>
          <tr><td><input type="text" id="userName" ng-model="user.userName" /></td></tr>
          <tr><td><input type="text" id="fullName" ng-model="user.fullName" /></td></tr>
          <tr><td><button type="submit" ng-click="submitForm()">Submit</button></td></tr>
      </table>
  </form>
  </div>
</body>

我的控制器是:

angular.module("userApp", [])
    .controller("userController", ['$scope', '$http', '$document', function ($scope, $http, $document) {
        $scope.user = {};
        $scope.msg = "";

        $http.get('/sg/user/' + userId)
            .success(function(data, status, headers, config) {
                $scope.user = data;
                $scope.error = "";

                if(typeof $scope.user._id === "undefined") {
                    $scope.formTask = "Create New";
                    $document.prop('title', 'Create User');
                } else {
                    $scope.formTask = "Edit";
                    $document.prop('title', '"Edit User');
                }

            })
            .error(function(data, status, headers, config) {
                $scope.user = {};
                $scope.error = data;
            });

        $scope.submitForm = function()
        {
            $http.put('/sg/user/' + userId, $scope.user)
                .success(function (data, status, headers, config)
                {
                    $scope.msg = data;
                })
                .error(function (data, status, headers, config)
                {
                    $scope.msg = "SUBMIT ERROR";
                });
        };
    }]);

当我打电话给页面时:

http://MYAPP/sg/user/edit/2

页面显示正确,填充了用户#2数据。当我点击&#34;提交&#34; $ http.put()被称为OK,并且(使用调试器)调用.success()函数,&#34;数据&#34;充满我的用户#2更新OK&#34;消息。

一旦成功()退出,URL栏就会填充:

http://MYAPP/sg/user/edit/2?userName=SecondUser&fullName=Second+User

再次调用.controller()。好像页面被告知刷新,除了填写表单字段,就像我发出GET一样。

我在这里缺少什么?

TIA, 杰罗姆。

1 个答案:

答案 0 :(得分:2)

您正在使用ng-click,但没有什么能阻止按钮的默认操作,即提交表单。

请改用以下内容。

<form ng-submit="submitForm()" ...>

或者将按钮的type="submit"更改为type="button"