在AngularJS中的传统表单中提交$ modelValue而不是$ viewValue

时间:2016-02-09 18:18:34

标签: html angularjs forms http-post masking

我正在使用input mask directive强制输入字段在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="amount" ui-number-mask="2" ng-model="debit.amount">
            <input type='submit'>
        </form>
    </div>
</div>

一切都按预期工作。模型保存非格式化的十进制值,输入字段显示格式化的值。

input-mask

当我点击 submit 并且表单以传统的POST方式提交时,问题就出现了。

服务器收到以下内容:

{ 
    "form": {
        "amount": "1,299.99", 
    },
} 

而不是

{ 
    "form": {
        "amount": "1299.99", 
    },
} 

我相信这是因为它提交了$viewValue而不是$modelValue

我尝试过的解决方法

  1. 使用隐藏字段并将VALUE属性设置为模型值:

    <input type='hidden' name="amount_hidden" value="{{debit.amount}}">         
    

    它有效,但是复制字段有点麻烦。请参阅JsFiddle

  2. 使用AngularJS“$http.post() 提交,以模仿传统的表单帖子。这也有效,但它比以前更麻烦。请参阅JsFiddle

  3. 是否有更简单的方法强制提交$modelValue

0 个答案:

没有答案