0

我使用了一个指令来格式化文本框上的数字。

'use strict';
app.directive('numberOnly', function ($filter) {
return {
    require: '?ngModel',
    link: function (scope, elem, attrs, ctrl) {
        if (!ctrl) {
            return;
        }

        ctrl.$formatters.push(function () {
            return $filter('number')(ctrl.$modelValue);
        });

        elem.bind('blur', function (event) {
            var plainNumber = elem.val().replace(/[^\d|\-+|\.+]/g, '');
            elem.val($filter('number')(plainNumber));
        });
    }
};
});

在我使用的html中:

<div class="row" ng-show="step === 1">
 <div class="col-lg-6">
     <label for="">Number1</label>
     <div class="form-group">
        <input type="text" class="form-control" number-only ng-model="mynumber1">
     </div>
 </div>
</div>
<div class="row" ng-show="step === 2">
 <div class="col-lg-6">
     <label for="">Number2</label>
     <div class="form-group">
        <input type="text" class="form-control" number-only ng-model="mynumber2">
     </div>
 </div>
</div>

在控制器中我设置step = 1为默认值。因此,当页面加载时,我在文本框中看到Number1值按预期显示:23,456 但是当我更改step = 2为显示时Number2,此文本框中的值是23456(未格式化)。

请让我知道为什么会这样以及如何解决?

4

0 回答 0