0

我的模型变量已经绑定到表单中的一些隐藏输入字段。

当用户点击提交按钮时,我尝试通过更新相应的绑定模型变量来更新这些字段,但它们没有改变(我注意到在服务器上转储请求时,我总是收到旧数据),我也注意到当我使用普通文本输入而不是隐藏输入时,一切正常

这是我的代码:

形式

<form name="bla bla" action="bla bla" method="post" ng-submit="updateForm()"> 
  <input type="hidden" name="token" ng-model= "extra.token" />
  <input type="hidden" name="filters" ng-model="extra.filters" />
  <button type="submit">
    submit form
  </button>
</form>

控制器

var app = angular.module(... // bla bla

app.controller('MyController', ['$scope', ctrlDef]);

function ctrlDef($scope) {
  $scope.extra = {};
  $scope.extra.token = '';
  $scope.extra.filters = '';

  $scope.updateForm = function() {
      $scope.extra.token = 'test1';
      $scope.extra.filters = 'test2';
  };
}
4

1 回答 1

1

method如果您使用标准 HTML 表单属性( ,action等) ,我认为 ngSubmit 不会在 POST 请求之前可靠地运行。一个更好的主意是使用该$html服务来发送您的请求。这也有异步的好处,所以你不应该像现在那样需要隐藏的 iframe。

app.controller('MyController', ['$scope', '$html', ctrlDef]);

function ctrlDef($scope, $html) {
  $scope.extra = {};
  $scope.extra.token = '';
  $scope.extra.filters = '';

  $scope.updateForm = function() {
      $scope.extra.token = 'test1';
      $scope.extra.filters = 'test2';

      $http.post(extra, "your post url here").then(function (response) {
          // do stuff with the response here...
      });
  };
}
于 2016-02-08T15:24:28.380 回答