Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Биндинг данных после $destroy (https://javascript.ru/forum/angular/49122-binding-dannykh-posle-%24destroy.html)

rotorgames 30.07.2014 11:23

Биндинг данных после $destroy
 
Всем привет, пишу приложение под мобильные телефоны на angular.js и столкнулся со всем известной проблемой производительности ng-repeat.

Решил, зачем каждый раз при возврате на страницу заного компилировать весь dom, можно просто закешировать его.

Когда вызывается событие $destroy у scope я переншу нужные элементы в виртаульный div которого нет в dom. По возвращению на страницу просто вставляю его в нужное место.

Работает отлично, но перестают работать события и биндинг данных.

Может кто подскажет, как сохранить привязку данных, не используя $compile и $interpolate.

Спасибо

a.malitsky 30.07.2014 23:26

Имхо, никак. Но мне проблема низкой производительности ng-repeat не знакома, возможно из-за того что я не использую endless scroll.

rotorgames 31.07.2014 07:46

В принцыпе, уже нашел решение, нужно писать свой ui-view.
Теперь другой вопрос, как уже существующий scope привязать к другому scope. То есть сделать его дочерным.

Tek 31.07.2014 09:37

Самое простое привязать через html:
<div ng-controller="parentController as parent">
    <div ng-controller="childController as child">
         {{parent.data}}
    </div>
</div>

rotorgames 31.07.2014 16:09

Всем спасибо, собственно уже решил проблему сам. Написал сервис который может удалять и соеденять scope с сохранением watchers. Производительность с кешированием dom, просто супер.

rotorgames 17.08.2014 19:12

В общем написал дерективу которая будет кешировать весь dom что находится в ней, и при смене state просто востанавливать его.
Производительность 300-400%

https://github.com/rotorgames/angular-rg-cache-view


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