将货币过滤器应用于angularjs中的输入字段

J. *_*son 17 javascript jquery angularjs

嗨,当我使用span标签时,我可以应用货币过滤器

<div ng-repeat="item in items">
    <span>
        {{item.cost | currency}}
    </span>
</div>
Run Code Online (Sandbox Code Playgroud)

我想知道如何在输入标签中应用相同的货币过滤器.即

<div ng-repeat="item in items">
    <input type="text"  ng-model="item.cost | currency" />
</div>
Run Code Online (Sandbox Code Playgroud)

当我尝试将货币过滤器应用于输入字段时,它不起作用.请让我知道如何将货币过滤器应用于输入字段.谢谢

jjb*_*kir 39

我创建了一个处理格式输入字段的简单指令.这是一个jsfiddle的例子.要使用它,请将其添加到现有代码中.

<div ng-repeate="item in items">
    <input type="text"  ng-model="item.cost" format="currency" />
</div>
Run Code Online (Sandbox Code Playgroud)

并将此指令添加到您的代码中.

// allow you to format a text input field.
// <input type="text" ng-model="test" format="number" />
// <input type="text" ng-model="test" format="currency" />
.directive('format', ['$filter', function ($filter) {
    return {
        require: '?ngModel',
        link: function (scope, elem, attrs, ctrl) {
            if (!ctrl) return;

            ctrl.$formatters.unshift(function (a) {
                return $filter(attrs.format)(ctrl.$modelValue)
            });

            elem.bind('blur', function(event) {
                var plainNumber = elem.val().replace(/[^\d|\-+|\.+]/g, '');
                elem.val($filter(attrs.format)(plainNumber));
            });
        }
    };
}]);
Run Code Online (Sandbox Code Playgroud)

  • 但模型值受影响而不是数字,是格式化的字符串 (7认同)