确定的正确方法,所以我创建一个表单,像这样:AngularJS和嵌套形式:命名和声明模型
<form novalidate class="simple-form" action="" name="mainForm" ng-submit="doSubmit()" method="POST">
<div ng-form name="giftForm" class="panel-body">
<input type="text"
id="x_amount"
name="x_amount"
class="form-control input-lg"
ng-model="giftForm.amount"
ng-required="true">
</div>
<div class="row">
<button type="submit" class="btn" ng-disabled="mainForm.$invalid">Submit</button>
</div>
</form>
这工作进行验证,即MainForm的$无效的唯一亮点使按钮后,输入有文字。然而,使用batarang,我注意到,范围看起来像这样:
{"giftForm":{"x_amount":{},"amount":"a"}}
所以它是基于名称和声明NG-模型创建模型值。如果我改变他们是一样的,像这样:
<input type="text"
id="x_amount"
name="x_amount"
class="form-control input-lg"
ng-model="giftForm.x_amount"
ng-required="true">
的提交说明的正确范围:
{"giftForm":{"x_amount":"a"}}
但输入字段最初显示与输入[Object对象],这使得我觉得我在这里混淆了一些东西.....我不能在所有的输入字段中都有这个。
我希望名称和模型相同。这似乎是渐进增强的方式将允许一个正常的非Ajax后通过简单地移除NG提交方式和AJAX方式会是什么样子:
$http({
method : 'POST',
url : 'formAction.do',
data : $.param(angular.toJson($scope.mainForm)),
headers : { 'Content-Type': 'application/x-www-form-urlencoded' }
})
.success(function(data) {
//success
})
.error(function(data, status, headers, config) {
//error
});
任何人有见识到了什么我失踪或如果我的架构有缺陷,我将非常感激智慧....
好的,这改变了它,现在我看到了更多的东西,现在看着对象,giftForm从简单的模型变成了看起来像formController的东西。 – jessehensold
所以我误解了你是如何声明这些的,但现在又回到了寻找ajax提交的所有子表单数据的最佳方法的原始问题。在范围内创建的模型对象没有什么特别的地方吗?因为现在在mainForm对象上做一个angular.toJson将会返回的不仅仅是输入数据......我会提出一个新问题。 – jessehensold
实际上我认为''scope.giftForm'被'FormController'覆盖,然后当''更新了它的模型时,'FormController'接收到另一个值。这是一个混乱,只是给他们不同的名字或会有麻烦。 –