2016-09-01 3 views
0

Итак, у меня есть текстовая область, определенная с помощью ng-списка, который будет разделять элементы в массиве на их собственную строку.Обновить область текста при изменении области

<textarea data-ng-model="names" data-ng-list="&#10;" data-ng-trim="false"></textarea> 

У меня есть кнопка, которая будет добавлять вещи в массив имен, и я хочу, чтобы показать в текстовом поле, а также.

<button data-ng-click='addPlayer()'>Add</button> 

$scope.addPlayer = function() { 
    $scope.names.push('HODOR' + n++); 
} 

К сожалению, текстовое поле не будет обновляться, когда больше элементов будут добавлены в массив, даже если они все еще хранятся в массиве. Их все равно могу заставить это случиться? Я попытался использовать $ scope. $ Apply, и это не сработало. Вот плукер, показывающий ошибку. https://plnkr.co/edit/gaLtvWw3Odhfngrhkitf?p=preview

ответ

0

Вы можете посмотреть на это:.

Cannot get textarea value in angularjs

Использование $ объем $ применять не будет работать, то текстовое поле является директивой и:

AngularJS будет искать эта переменная в рамках директивы. Его нет, и поэтому он подходит к $ parent. Переменная присутствует там, и текст вставляется в текстовое поле. При изменении текста в текстовом поле Angular не меняет родительскую переменную. Вместо этого он создает новую переменную в области директивы и, следовательно, исходная переменная не обновляется.

+0

Итак, если я правильно понимаю это, я должен изменить data-ng-model = "names" на data-ng-model = "$ parent.names", но при этом полностью отключает текстовое поле из массива , Я что-то упустил? – IFM

+0

@IFM использование controllerAs: контроллер: "MyController", controllerAs: "Мус", Затем установите значение в контроллере: angular.module ('MYAPP') контроллер ('MyController', функция (.) { this.myText = 'Dummy text'; }); Затем привяжите его непосредственно к свойству вашего контроллера, используя контроллер в качестве идентификатора:

Смежные вопросы