Подтвердить что ты не робот

Как отключить обрезку входов в AngularJS?

Я нашел странное поведение: angular по умолчанию оценивает значения модели. И быстрый поиск в Google не помогает мне решить эту проблему. Я нашел предложения ng-no-trim директив, ng-trim и так далее. Но ничего не работает.

Я предоставил небольшой фрагмент, который представляет эту проблему ниже.

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

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

Также вы можете попробовать этот фрагмент здесь.

Я добавил текстовое поле, которое синхронизируется с моделью text. Но он не реагирует на просмотр, добавляя новые конечные пробелы или разбивая линию на новую.

Что я могу сделать, чтобы отключить это поведение? Спасибо.

4b9b3361

Ответ 1

Указанная директива является новой в 1.1.1; вы можете увидеть, как он работает с помощью фрагмента JS Bin.

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

Ответ 2

Откат для 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/