一尘不染

AngularJS:换行符到段落元素

angularjs

在Angular中,我需要从包含换行符的文本块中生成一系列段落元素吗?

我可以想到几种方法来做到这一点。但是我想知道是否有一种“官方的” Angular方法,或者在AngularJS上下文中最优雅的方法是什么?

一个例子

从:

Lorem ipsum dolor坐下来,管教着迷。\ 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

阅读 464

收藏
2020-07-04

共1个答案

一尘不染

我能想到的最好的解决方案是创建一个过滤器:

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>
2020-07-04