2013-02-19 107 views
53

我发现了一些奇怪的行为:缺省情况下,角度修剪模型值。快速搜索并不能帮助我解决这个问题。我发现了ng-no-trim指令性提案,ng-trim等。但没有任何工作。如何禁用AngularJS输入的修剪?

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

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

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

也可以尝试这个片段here

我添加了一个textarea,它与text型号同步。但是,在添加新的尾部空格或将行分隔到新的空格时,它并没有反应。

我该怎么做才能关闭这种行为?谢谢。

回答

88

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

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

非常感谢。我已经包含了1.1.1版本,现在它效果很好。 – ValeriiVasin 2013-02-19 13:37:05

+1

没问题。也许值得注意的是,1.1.2目前是最新的不稳定。 – 2013-02-19 13:48:57

+0

你能告诉我更多的事情吗?我添加了'ng-trim ='false'',当我在textarea里面输入内容时,我需要在'div'中复制它的内容,但是用br替换'\ n'。但我的替换不起作用。只有在我以新行输入一个字符后才插入BR。有什么想法吗?示例:http://jsbin.com/ibosub/12/edit – ValeriiVasin 2013-02-19 13:55:56

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/