2013-02-19 30 views
53

私はいくつかの奇妙な振る舞いを見つけました。角度の調整はデフォルトでモデル値です。クイックグーグルは私にこの問題を解決する助けにはならない。私はng-no-trimの指示プロポーザル、ng-trimなどを見つけました。しかし、何も動作しません。AngularJSで入力のトリミングを無効にするにはどうすればよいですか?

以下、この問題を表す少しのスニペットを提供しました。

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

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

また、このスニペットhereを試すこともできます。

モデル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

+1

問題ありません。おそらく注目に値するのは、現在1.1.2が最新の不安定であるということです。 –

+0

もう1つ教えてください。 'ng-trim = 'false' 'を追加しました。テキストエリア内に入力するときは、' div'の中身を複製する必要がありますが、 '\ n'は 'br'に置き換えてください。しかし、私の交換は機能しません。 BRは、改行時に1文字以上入力した後にのみ挿入されます。何かご意見は?例:http://jsbin.com/ibosub/12/edit – ValeriiVasin

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

ためのあなたが有効にすることができます/ NG-トリムを使用してトリムオプションを無効に=真/偽。 参照https://docs.angularjs.org/api/ng/input/input%5Btext%5D

+0

お役立ち情報前にこの指令を聞いたことはありません! –

+0

私にとっては、それも新しい@MartynChamberlin –

関連する問題