Как я могу сгенерировать массив из каждой строки текстового поля с помощью AngularJS

Я пытаюсь создать текстовое поле, вход которого привязан к массиву JS, где записи соответствуют каждой строке в текстовой области.

Я пытаюсь использовать ngList с его необязательным параметром для указания разделителя. Я могу заставить его работать со значением по умолчанию (,), добавив запятую после каждой строки текстового поля, но я действительно не хочу этого требовать.

текстовая область

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

с вводом:

test1
test2
test3

Сгенерированный вывод ["test1\ntest2\ntest3"]

Я ищу: ["test1","test2",test3"]

Plnkr Demo

Ответ 1

Это обновление было обновлено в Angular 1.3 и теперь работает следующим образом:

<textarea ng-model="list" ng-list="&#10;" ng-trim="false"></textarea>
  • добавить ng-trim="false" директиву тегу <textarea>
  • используйте код ASCII для символа новой строки: &#10;

Ответ 2

РЕДАКТИРОВАТЬ:. По сравнению с Angular 1,3, этот ответ устарел.

Обратитесь к @OrangeSalty answer


Из (1.2) ngList docs:

Если указано в форме/что-то/, то значение будет преобразовано в регулярное выражение.

Я только что добавил /, и он магически сработает!

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

updated plnkr demo

Ответ 3

Вы можете разделить вывод angular:

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

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

(Хотя решение, которое вы опубликовали, намного лучше!)