如何使用AngularJS从textarea的每一行生成一个数组

时间:2014-04-08 15:04:13

标签: angularjs

我正在尝试创建一个textarea,其输入绑定到JS数组,其中条目对应于文本区域中的每一行。

我一直在尝试使用ngList及其可选参数来指定分隔符。我可以使用默认值(,)通过在textarea的每一行之后添加逗号,但我真的不想要它。

textarea

<textarea ng-model="list"
          rows="5"
          ng-list="\n" >
</textarea>

输入:

test1
test2
test3

生成的输出为["test1\ntest2\ntest3"]

我要找的是:["test1","test2",test3"]

Plnkr Demo

3 个答案:

答案 0 :(得分:16)

这是在Angular 1.3中更新的,现在的工作原理如下:

<textarea ng-model="list" ng-list="&#10;" ng-trim="false"></textarea>
  • ng-trim="false"指令添加到<textarea>代码
  • 将ASCII代码用于换行符:&#10;

答案 1 :(得分:5)

编辑: Angular 1.3 开始,这个答案已经过时了。

请参阅@OrangeSalty's answer


来自the (1.2) ngList docs

  

如果以form / something /指定,则该值将转换为正则表达式。

我刚刚添加了/,它神奇地工作了!

<textarea ng-model="list"
          rows="5"
          ng-list="/\n/" >
</textarea>

updated plnkr demo

答案 2 :(得分:1)

你可以分割输出角度给你:

var result = ["test1\ntest2\ntest3"][0].split("\n")

// result = ["test1", "test2", "test3"]

(虽然您发布的解决方案要好得多!)