2016-08-18 2 views
0

Используя инструменты dev, я сделал профилирование приложений Ionic 1 (угловой 1. *), я увидел, что у него было много отдельных DOM, что привело к медленной производительности памяти &.Как мы можем удалить Detached DOM в контроллере и директиве?

Я сделал профилирование & увидел, что это привело к увеличению отдельного дома. После googling я обнаружил, что нам нужно использовать $ destroy & элементы для очистки. У меня есть большое количество пользовательских директив & контроллеров.

Я использовал это для пользовательских директив

elem.on('$destroy', function() {    
       elem.off(); 
       $log.info('Inside destroy..' + elem); 
      }); 

      scope.$on('$destroy', function() { 
       scope = {};     
       $log.info("In destroy of:" + scope); 
      }); 

Как я могу удалить DOM или область применения элементы из контроллеров, я знаю, что его подобный код, но только эль в директиве; как мы можем получить доступ к элементам DOM в контроллере для уничтожения.

ответ

0

Я думаю, что то, что вы на самом деле видите, является поведением по умолчанию в ионном из-за его механизма caching.

По умолчанию представления кэшируются для повышения производительности. Когда вид перемещен от него, его элемент остается в DOM, а его область отключена от цикла $ watch. При переходе к просмотру, который уже кэширован , его область затем снова соединяется, и существующий элемент , который остался в DOM, становится активным видом. Это также позволяет сохранить положение прокрутки предыдущих просмотров.

Если вы хотите отключить его для просмотра, вы можете установить атрибут <ion-view cache-view="false">. Вы также можете сделать это глобально через $ionicConfigProvider.views.maxCache(0);.

+0

так что если я сделаю cache-view = "false", то как удалить элементы DOM. Просмотр кеша уже неверен. –

+0

Удаляется автоматически, если для кеша установлено значение false. Вы просмотрели его в инструментах chrome dev? Он все еще показывает? Какую ионную версию вы используете? – radyz

+0

Я использую Ionic 1.3, мы используем множество пользовательских директив и контроллеров, но я не вижу их удаленными. Они отображаются как отдельные DOM –