7

Angular 内で、改行文字を含むテキスト ブロックから一連の段落要素を生成する必要がありますか?

これを行うにはいくつかの方法が考えられます。ただし、「公式の」Angularの方法があるのか​​ 、それともAngularJSのコンテキスト内で最もエレガントなアプローチがあるのか​​ 疑問に思っています.

から:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \n
Sed diam nonummy nibh euismod tincidunt ut laoreet dolore. \n
Magna aliquam erat volutpat. Ut wisi enim ad minim veniam.

に:

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
<p>Sed diam nonummy nibh euismod tincidunt ut laoreet dolore.</p>
<p>Magna aliquam erat volutpat. Ut wisi enim ad minim veniam.</p>

これを行うには、いくつかの方法を考えることができます。

  1. コントローラーのテキストを変更します (ただし、モデルの変更は避けたいと思います)
  2. ディレクティブを使用し、リンク関数で段落を生成します (非常に面倒に思えます)。
  3. フィルター (私の現在のお気に入り) を使用して配列を作成し、ng-repeat にパイプする
4

4 に答える 4

13

私が考えることができる最善の解決策は、フィルターを作成することでした:

angular.module('myApp').
filter('nlToArray', function() {
  return function(text) {
      return text.split('\n');
  };
});

これはテキストのブロックを取り、段落ごとに新しい配列要素を作成します。

この配列は、ng-repeat ディレクティブにプラグインできます。

<p ng-repeat="paragraph in textBlock|nlToArray track by $index">{{paragraph}}</p>
于 2013-06-21T15:33:07.387 に答える