Используя инструменты dev, я сделал профилирование приложений Ionic 1 (угловой 1. *), я увидел, что у него было много Detached DOM, что привело к медленной производительности и росту памяти.
Я сделал профилирование и увидел, что это приводит к увеличению отдельного дома. После googling я обнаружил, что нам нужно использовать $ destroy & clean up items. У меня есть большое количество пользовательских директив и контроллеров.
Я использовал это для пользовательских директив
elem.on('$destroy', function() {
elem.off();
$log.info('Inside destroy..' + elem);
});
scope.$on('$destroy', function() {
scope = {};
$log.info("In destroy of:" + scope);
});
Как я могу удалить элементы DOM или области видимости из контроллеров, я знаю его похожий код, но только директиву elem; как мы можем получить доступ к элементам DOM в контроллере для уничтожения.
Я думаю, что то, что вы на самом деле видите, это поведение по умолчанию в ионном режиме благодаря механизму кэширования.
По умолчанию представления кэшируются для повышения производительности. Когда представление перемещается от него, его элемент остается в DOM, а его область отключена от цикла $ watch. При навигации к уже кэшированному представлению его область снова подключается, а существующий элемент, оставшийся в DOM, становится активным. Это также позволяет сохранить положение прокрутки предыдущих просмотров.
Если вы хотите отключить его для просмотра, вы можете установить атрибут <ion-view cache-view="false">
. Вы также можете сделать это глобально через $ionicConfigProvider.views.maxCache(0);
,