如何使用角度滤镜过滤按键字符

时间:2013-05-06 18:04:36

标签: parsing angularjs filter

http://jsfiddle.net/x3azn/s7gFD/1/

我有一个过滤器可以过滤用户输入,但每三次或两次,如果您在框中键入一个字母,它就会通过。如果你不明白我的意思,请尝试输入以下内容。

ddd
asdfgg
vckzvdd
qwertt
希望你收到消息。 如果你输入

就不会出现
dfadfasdf, 

这很好但我们不能假设。

1 个答案:

答案 0 :(得分:1)

出于某种原因,您的解析器不会在重复按键时执行。因此,如果您键入“aa”或“bb”或“cc”,最后会在框中留下“a”,“b”或“c”,解析器从未运行过。我无法回答为什么会这样,但我可以建议一个替代方案:

您是否有理由将过滤器与此指令耦合?你可以单独使用指令轻松完成相同的任务,并且(无论如何)它看起来更干净:

app.directive('filteredInput', function($filter){
    var dirLink = function(s,e,a,c){
        console.log(s);
        console.log(a);
        s.$watch(a.ngModel, function(v) {
            //if (pattern.indexOf('numbers') != -1){
               s[a.ngModel] = s[a.ngModel].replace(/[^\d.]/g, "");
           //}
        });
    }
    return{
        require: 'ngModel',
        scope: true,
        link: dirLink
    }
});

http://jsfiddle.net/s7gFD/2/