http://jsfiddle.net/x3azn/s7gFD/1/
我有一个过滤器可以过滤用户输入,但每三次或两次,如果您在框中键入一个字母,它就会通过。如果你不明白我的意思,请尝试输入以下内容。
ddd
asdfgg
vckzvdd
qwertt
希望你收到消息。
如果你输入就不会出现
dfadfasdf,
这很好但我们不能假设。
答案 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
}
});