创建一个AngularJS过滤器以删除正则表达式匹配并替换textarea

时间:2017-04-22 23:57:45

标签: javascript angularjs angularjs-filter

我的目标是创建一个角度过滤器,可以放置在textarea或输入上,这样当用户键入与预定义正则表达式匹配的文本时,文本将被识别并替换为该文本的蒙版形式。

这是否可以使用过滤器?或者我应该以不同的方式接近它?我提供了我已经开始的东西,但是它离我太远了,我不确定它会有什么帮助。即使是一个坚实的起点和确认我正确接近(或不接受),也会有所帮助。

1 个答案:

答案 0 :(得分:0)

看起来指令是最简单的方法,因为过滤器不能包含在ng-model绑定中。

基于此, 重度帮助 (这可能会被标记为重复的问题)来自this page的第二个答案,我得到了它的工作我想要的方式。

angular.module("app").directive('customValidation', function () {
        return {
            require: 'ngModel',
            link: function (scope, element, attrs, modelCtrl: ng.INgModelController) {

                modelCtrl.$parsers.push(function (inputValue) {

                    var transformedInput = inputValue.replace(/microsoft/i, "W3Schools");


                    if (transformedInput != inputValue) {
                        modelCtrl.$setViewValue(transformedInput);
                        modelCtrl.$render();
                    }

                    return transformedInput;
                });
            }
        };
    });

<textarea ng-model="vm.text" ng-trim="false" custom-validation></textarea>