2014-04-08 7 views
12

Sto tentando di creare un'area di testo che viene inserita in un array JS in cui le voci corrispondono a ciascuna riga nell'area di testo.Come posso generare un array da ogni riga di un'area di testo con AngularJS

Ho tentato di utilizzare ngList con il parametro facoltativo per specificare il delimitatore . I può farlo funzionare con il valore predefinito (,) aggiungendo una virgola dopo ogni riga dell'area di testo, ma in realtà non voglio richiederlo.

textarea

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

con l'ingresso:

test1 
test2 
test3 

L'output generato è ["test1\ntest2\ntest3"]

Quello che sto cercando è: ["test1","test2",test3"]

Plnkr Demo

+0

Intendi ["test1", "test2", "test3"]? –

+0

@ChrisC sì, grazie per averlo capito, aggiornando ora –

+0

@ZachL Sono interessato a vedere come gestisci l'associazione iniziale ... (poiché non appena aggiungi qualcosa, condensa l'array in una stringa '[" test1 , test2, test3 "," qualcosa di nuovo "]' http: // jsfiddle.net/ncapito/wKquG/21/ – Nix

risposta

16

Questo è stato aggiornato in angolare 1.3 e ora funziona così:

<textarea ng-model="list" ng-list="&#10;" ng-trim="false"></textarea> 
  • aggiungere ng-trim="false" direttiva al <textarea> tag
  • utilizzare il codice ASCII per carattere di nuova riga : &#10;
+0

un plunker aggiornato: http://plnkr.co/edit/UwC3O6dT7H5DUHUtvjv0?p=preview –

+0

Nel caso in cui voglio aggiornare il modello ng e voglio rifletterlo nella textarea, non funziona con ng-trim e ng -list attributi. Quando lo rimuovo funziona. Ma ho bisogno di questa funzionalità. – muasif80

0

Si potrebbe dividere l'angolo di uscita ti dà:

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

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

(! Anche se la soluzione che hai postato è molto meglio)

+0

Grazie Chris! Certamente funzionerebbe, ma ovviamente cercherò un approccio più idiomatico. È strano come mi sbatto contro la testa per un'ora, poi entro quasi secondi di post su SO, lo faccio funzionare. –

+0

sembra che manchi "ngList". –

5

EDIT: partire dal angolare 1.3, questo la risposta è obsoleta.

prega di fare riferimento al @OrangeSalty's answer


Da the (1.2) ngList docs:

Se specificato in forma/qualcosa/allora il valore sarà convertito in un'espressione regolare.

Ho appena aggiunto il / e ha funzionato magicamente!

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

updated plnkr demo

Problemi correlati