2014-01-06 2 views
4

У меня есть модель:Как посмотреть элементы коллекции AngularDart?

class WordList { 
    List<Word> words = []; 
} 

Он создан с помощью инъекции зависимостей в одном из моих взглядов.

@NgController(
    selector: '[list-ctrl]', 
    publishAs: 'ctrl' 
) 
class ListCtrl { 
    WordList wordList; 
    Scope scope; 

    ListCtrl(this.router, this.wordList, this.scope) { 
    scope.$watchCollection("", onChange); 
    } 

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

Я считаю, что ключ находится в $ watchCollection, но я не могу понять, что передать как выражение часов. «ctrl.wordList.words» скажет мне, когда элементы будут добавлены/удалены, но не будут изменены.

ответ

6

$watchCollection как вы указываете, можете следить за изменениями в List не для внесения изменений в элементы списка. Причина этого в том, что наблюдение за каждым объектом будет иметь взрывное количество свойств.

scope.$watch(() => wordList, onChange); 

Вы могли бы реализовать метод onChange таким образом, что она будет создавать дополнительные часы на каждом новом элементе, а также разрегистрировать часы на удалении элемента из коллекции.

+2

У меня есть аналогичный вопрос, но этот ответ кажется несовременным. '$ watch' - это просто' смотреть' сейчас. Кроме того, '() => wordList' больше не является допустимым выражением. Можете ли вы обновить этот ответ, чтобы отразить последние изменения в Angular Dart? Мне нужно глубоко посмотреть карту, и я надеюсь, что это поможет. Спасибо. –

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