如何禁用AngularJS中的输入修剪?

时间:2013-02-19 13:13:31

标签: javascript angularjs

我发现了一些奇怪的行为:默认情况下,角度修剪模型值。快速的谷歌搜索并没有帮助我解决这个问题。我找到了ng-no-trim指令提案,ng-trim等等。但没有任何作用。

我在下面提供了一个代表此问题的小片段。

function Ctrl($scope) {
  $scope.text='';

  $scope.$watch('text', function (newValue) {
    console.log(newValue);
  });
}

您也可以尝试使用此代码段here

我添加了一个与模型text同步的textarea。但是,当添加新的尾随空格或将线条拆分为新的空格时,它不会对观察做出反应。

如何关闭此行为?感谢。

3 个答案:

答案 0 :(得分:94)

有关指令是1.1.1中的新指令;你可以看到它使用JS Bin snippet

<textarea cols="30" rows="10" ng-model="text" ng-trim="false"></textarea>

答案 1 :(得分:3)

角度1.0.x的后退

var app = angular.module('app', []);

app.directive('ngTrim', function() {
    return {
        require: 'ngModel',
        priority: 300,
        link: function(scope, iElem, iAttrs, ngModel) {
            if (iAttrs.ngTrim === 'false') {
                // Be careful here. We override any value comming from the previous
                // parsers to return the real value in iElem
                ngModel.$parsers.unshift(function() {
                    return iElem.val();
                });
            }
        }
    }
});

angular.bootstrap(document, ['app']);

http://jsfiddle.net/vXCnj/3/

答案 2 :(得分:3)

您可以使用ng-trim = true / false启用/禁用修剪选项。 参考https://docs.angularjs.org/api/ng/input/input%5Btext%5D