Ответ 1
Указанная директива является новой в 1.1.1; вы можете увидеть, как он работает с помощью фрагмента JS Bin.
<textarea cols="30" rows="10" ng-model="text" ng-trim="false"></textarea>
Я нашел странное поведение: angular по умолчанию оценивает значения модели. И быстрый поиск в Google не помогает мне решить эту проблему. Я нашел предложения ng-no-trim
директив, ng-trim
и так далее. Но ничего не работает.
Я предоставил небольшой фрагмент, который представляет эту проблему ниже.
function Ctrl($scope) {
$scope.text='';
$scope.$watch('text', function (newValue) {
console.log(newValue);
});
}
Также вы можете попробовать этот фрагмент здесь.
Я добавил текстовое поле, которое синхронизируется с моделью text
. Но он не реагирует на просмотр, добавляя новые конечные пробелы или разбивая линию на новую.
Что я могу сделать, чтобы отключить это поведение? Спасибо.
Указанная директива является новой в 1.1.1; вы можете увидеть, как он работает с помощью фрагмента JS Bin.
<textarea cols="30" rows="10" ng-model="text" ng-trim="false"></textarea>
Откат для 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']);
Вы можете включить/отключить опцию trim, используя ng-trim = true/false. Ref https://docs.angularjs.org/api/ng/input/input%5Btext%5D