好的,所以我正在创建一个像这样的表单:
<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.$invalid 仅在输入有文本后突出显示启用按钮。但是,使用batarang,我注意到范围看起来像这样:
{"giftForm":{"x_amount":{},"amount":"a"}}
因此它基于名称和声明的 ng-model 创建模型值。如果我将它们更改为相同,如下所示:
<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 object],这让我觉得我在这里混淆了一些东西......我不能在所有输入字段中都有它。
我希望名称和型号相同。这似乎是渐进式增强方式,只需删除 ng-submit 方法即可允许正常的非 ajax 发布,而 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
});
任何人都可以洞察我所缺少的东西,或者如果我的架构从头开始就有缺陷,我会很感激你的智慧......