1

我想提交一个表单,但先添加一些隐藏的输入。隐藏的输入通过 ng-repeat 添加。最终它们将被呈现,但我如何确定在触发提交事件之前 DOM 已经更新?

部分的:

<form ng-submit="addValuesAndSubmit()">
  <input type="hidden" name="{{name}}" value="{{value}}" ng-repeat="(name, value) in order">
  <input type="submit">
</form>

控制器:

$scope.addValuesAndSubmit = function() {
  $scope.order = { param1: 1, param2: 2 };
  // TODO: wait until form is rendered
  // there should be two <input type="hidden"> now
  // trigger submit action
};

据我了解,可以为此使用指令的后链接功能。我是对的还是我遗漏了一些明显的东西?

编辑:表单数据需要发布到外部网站,将浏览器重定向到响应。这是一个支付集成,我在服务器上计算 HMAC,将其作为隐藏元素添加到表单中,然后将其发布到支付提供商。$http.post() 的实现似乎没有进行重定向,而是返回响应。

4

1 回答 1

0

使用 Angular 应用程序,您通常希望提交模型,而不是从表单元素中提取数据。即,使用 ng-model 指定 $scope 模型对象属性,然后通过 ng-submit 提交该模型对象。在我看来,您已经可以访问order您的 $scope,因为您正试图让您的关联视图使用它。所以你可能不需要等待视图更新——order直接在你的 addValuesAndSubmit() 函数中使用。

于 2013-01-28T22:49:56.157 回答