Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Как отключить scope и всех дочерние scope из цикла проверки $digest? (https://javascript.ru/forum/angular/55492-kak-otklyuchit-scope-i-vsekh-dochernie-scope-iz-cikla-proverki-%24digest.html)

FireVolkhov 30.04.2015 11:40

Как отключить scope и всех дочерние scope из цикла проверки $digest?
 
Как отключить scope и всех дочерние scope из цикла проверки $digest?
Возможно ли это сделать на Angular?, т.к. это нужно для повышения производительности приложения. Включение/выключение остается на совести программиста.

artemdemo 10.05.2015 22:02

Нет простого решения. Нужно провести "комплекс мероприятий"

Самый очевидный путь - пробовать использовать one-time binding - тогда данные будут выводиться один раз и больше не будут проверяться на изменения.
Так же если выводите большие списки через ng-repeat, то используйте track by - тогда ангулар не будет добавлять свой индекс, что значительно ускорит работу.

В принципе можно и "отцепить scope" например по команде обнулить все вотчеры а потом вернуть их, хотя я сам и не пробовал:

var watchers;

scope.$on('suspend', function () {
  watchers = scope.$$watchers;
  scope.$$watchers = [];
});

scope.$on('resume', function () {
  scope.$$watchers = watchers;
  watchers = null;
});

igormog 10.05.2015 22:06

artemdemo, вы случайно не автор этого блога - artemdemo.me ?
P.S. Извините за флуд

artemdemo 11.05.2015 09:46

Да, это мой блог.


Часовой пояс GMT +3, время: 09:26.