Html 在AngularJS的传统表单post中提交$modelValue而不是$viewValue
在AngularJS 1.4.9中,我使用一个命令强制输入字段调整为固定的十进制格式(取决于区域设置) 这是我的代码:Html 在AngularJS的传统表单post中提交$modelValue而不是$viewValue,html,angularjs,forms,http-post,masking,Html,Angularjs,Forms,Http Post,Masking,在AngularJS 1.4.9中,我使用一个命令强制输入字段调整为固定的十进制格式(取决于区域设置) 这是我的代码: <div ng-app="MyApp"> <div ng-controller="MyCtrl"> <form action="http://httpbin.org/post" method="post" name='myForm'> <input type="text" name="am
<div ng-app="MyApp">
<div ng-controller="MyCtrl">
<form action="http://httpbin.org/post" method="post" name='myForm'>
<input type="text" name="amount" ui-number-mask="2" ng-model="debit.amount">
<input type='submit'>
</form>
</div>
</div>
而不是
{
"form": {
"amount": "1299.99",
},
}
我相信这是因为它提交了$viewValue
,而不是$modelValue
我尝试过的变通方法
值
属性设置为模型值:
<input type='hidden' name="amount_hidden" value="{{debit.amount}}">
这是可行的,但复制字段有点麻烦。看$http.post()
提交,以模拟传统表单post。这也行得通,但它比以前的更麻烦。看是否有更简单的方法强制提交
$modelValue
?当您提交传统表单时,不会涉及angular,因此不会查看模型值。我认为ng submit是使用angular提交表格的正确方式。你为什么认为它很笨重?@NMittal是对的。传统表单submit接受输入上“value”属性中存储的任何值。因此,$viewValue
是您请求中反映的内容。另一种解决方案是在输入上放置一个元素,显示$modelValue
,而不是$viewValue
。虽然它仍然是字段的副本,但您可以停止向服务器发送数据的副本。从可见输入字段中删除name属性。请看@NMittal angular确实参与其中。这就是在输入
字段中忽略值
属性的原因。我认为这很麻烦,因为为了能够复制一个简单的post操作,您必须编写和维护大量代码。@SeanLarkin如果它包含VALUE
属性的内容,那么通过设置此字段可以轻松解决问题。但是,输入
字段中会完全忽略此属性。
<input type='hidden' name="amount_hidden" value="{{debit.amount}}">