Подтвердить что ты не робот

Могу ли я предотвратить/задержать сбор данных AngularJS $при обновлении модели?

Есть ли способ отложить или задержать сборку?

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

В идеале я хотел бы

  • Остановить $digest
  • Внесите все изменения в модель.
  • Запустите $digest

$digest найдет все грязные объекты и запустит наблюдателей.

Другим решением для этого является, вместо того, чтобы останавливать $digest, я мог бы

  • Удалить наблюдателей
  • Внесите все изменения в модель (дайджест все еще работает)
  • Добавить наблюдателей, которые были удалены.

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

Я просто чувствую, что второй вариант кажется его взломом.

Идеи??

4b9b3361

Ответ 1

Это вовсе не хак. Хороший вопрос, потому что большие наборы данных могут привести к тому, что цикл $digest будет работать очень медленно, когда пользователь быстро вводит текст или удерживает его обратно. Вы можете определенно сделать настройки производительности, как быть осторожными с вашими функциями $watch и $filter, но иногда это лучшая идея отложить $digest, используя функцию debounce.