如何编写格式化模型值的AngularJS指令?

时间:2014-06-11 08:28:03

标签: javascript angularjs angularjs-directive

我正在尝试编写一个指令,让<input>元素使用,代替.作为分隔符来接受浮点数。

我通过向.添加新的解析器来解析用户输入the example from the documentation以接受,controller.$parsers作为分隔符。

但是,我现在希望10.5显示为10,5(如果我使用JS在模型中设置值,则目前不是这种情况)。

所以我可以在指令中添加&#34;格式化程序&#34;功能?(就像我可以添加&#34;解析器&#34;功能)

这是指令:

app.directive('inputFloat', function () {
    var FLOAT_REGEXP = /^\-?\d+((\.|\,)\d+)?$/;
    return {
        require: 'ngModel',
        link: function (scope, element, attrs, controller) {
            controller.$parsers.unshift(function (viewValue) {
                if (FLOAT_REGEXP.test(viewValue)) {
                    controller.$setValidity('float', true);
                    if (typeof viewValue === "number") {
                        return viewValue;
                    } else {
                        return parseFloat(viewValue.replace(',', '.'));
                    }
                } else {
                    controller.$setValidity('float', false);
                    return undefined;
                }
            });
        }
    };
});

以下是模板中的使用方法:

<input input-float type="text" ng-model="input.value.digitalValue">

1 个答案:

答案 0 :(得分:0)

您可以使用controller.$formatters执行此操作。

请参阅the documentation了解详情。