57

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

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

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

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

你也可以在这里试试这个片段。

我添加了一个与 model 同步的 textarea text。但是当添加新的尾随空格或换行时,它不会对观看做出反应。

我能做些什么来关闭这种行为?谢谢。

4

3 回答 3

96

有问题的指令是 1.1.1 中的新指令;你可以看到它使用JS Bin 片段工作。

<textarea cols="30" rows="10" ng-model="text" ng-trim="false"></textarea>
于 2013-02-19T13:26:49.967 回答
3

Angular 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/

于 2014-05-12T17:22:18.063 回答
3

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

于 2016-04-03T18:39:30.013 回答