渲染在我的自定义指令中的setViewValue之后吃空格

时间:2015-12-04 12:30:48

标签: angularjs

我正在尝试创建只替换某些符号的自定义指令,它的工作几乎没问题,但是我做了一个工作,但是我不能在输入中使用'空格键'而是删除它而我无法理解为什么。

这是我的指示:

 core.directive('comareplace', function () {

        return {
            require: 'ngModel',
            link: function (scope, el, attr, ngModelCtrl) {
                el.bind('keyup change', function () {
                    if (angular.isFunction(ngModelCtrl.$viewValue.replace)) {
                        ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue.replace(',', ' '));
                        ngModelCtrl.$render();
                        scope.$apply();
                    }
                });
            }
        };
    });

例如,当您键入输入时,这个'qwe,rt'将它替换为'qwe rt',但是当您尝试使用空格'qwert'键入它时,它会删除空格'qwert'

有人知道为什么吗?以及如何纠正它?

1 个答案:

答案 0 :(得分:2)

默认情况下,AngularJS会在将输入绑定到模型之前修剪输入的内容。 您可以使用ng-trim="false"属性选择退出此默认修剪。

  

ngTrim :如果设置为false,Angular不会自动修剪输入。这个   输入[type = password]控件将忽略参数   从不修剪输入。

     

(默认:true)

     

Reference

示例

 <input type="text" ng-model="name" ng-trim="false" />

<强> See Fiddle