Javascript Angularjs:input中的format标志不将字母传递给filter方法

Javascript Angularjs:input中的format标志不将字母传递给filter方法,javascript,angularjs,filter,Javascript,Angularjs,Filter,我目前正在使用Angularjs开发一个应用程序,我试图格式化的输入有问题 我想在live中,在输入值中每隔3个字符插入一个空格 这是我的 我的意见: <input ng-if="!$ctrl.disabled" ng-pattern="$ctrl.pattern" <!-- value is "^(\\d+|\\s)+$" --> ng-model="$ctrl.model" id="{{$ctrl.name}}

我目前正在使用Angularjs开发一个应用程序,我试图格式化的输入有问题

我想在live中,在输入值中每隔3个字符插入一个空格

这是我的

我的意见:

<input
        ng-if="!$ctrl.disabled"
        ng-pattern="$ctrl.pattern" <!-- value is "^(\\d+|\\s)+$" -->
        ng-model="$ctrl.model"
        id="{{$ctrl.name}}"
        name="{{$ctrl.name}}"
        type="text"
        format="filterNumber"
        ng-required="$ctrl.required"
        ng-attr-placeholder="{{$ctrl.disabled ? undefined : $ctrl.placeHolder}}"
        ng-disabled="$ctrl.disabled"
        class="half-content" />

<div ng-show="!$ctrl.disabled && ($ctrl.form.$submitted || $ctrl.form[$ctrl.name].$touched)">
   <div class="error-msg" ng-show="!$ctrl.form[$ctrl.name].$valid">Le format attendu est un nombre entier.</div>
   <div class="error-msg" ng-show="$ctrl.form[$ctrl.name].$error.required">Merci de compléter ce champ.</div>
</div>
如您所见,我的输入上有一个ng模式标志,用来验证用户只键入数字(由于我的过滤器,空格被接受)。否则,将显示一条错误消息

目前,我的筛选器每三个字符正确放置一个空格。问题是,当用户键入字母时,它不会出现在字段中,但ng模式会看到它并显示错误消息。更奇怪的是,如果用户键入两次完全相同的字母,它就会出现在字段中

当搜索正在发生的事情时(请参见合并的图片),我看到当到达filter方法时,输入值不包含字母,只包含数字。因此,返回的字符串也不包含字母,因此是结果

所以我的问题是:为什么传递给过滤器的字符串排除字母,以及如何修复它

 filters.filter('filterNumber', function () {
   return function (item) {
      if (item) {

              return item.toString().replace(/\B(?=(.{3})+(?!.))/g, " ");
      }
      return ;
  };
});