Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.07.2014, 11:23
Новичок на форуме
Отправить личное сообщение для rotorgames Посмотреть профиль Найти все сообщения от rotorgames
 
Регистрация: 30.07.2014
Сообщений: 5

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

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

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

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

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

Спасибо

Последний раз редактировалось rotorgames, 30.07.2014 в 13:08.
Ответить с цитированием
  #2 (permalink)  
Старый 30.07.2014, 23:26
Аватар для a.malitsky
Аспирант
Отправить личное сообщение для a.malitsky Посмотреть профиль Найти все сообщения от a.malitsky
 
Регистрация: 26.03.2010
Сообщений: 56

Имхо, никак. Но мне проблема низкой производительности ng-repeat не знакома, возможно из-за того что я не использую endless scroll.
Ответить с цитированием
  #3 (permalink)  
Старый 31.07.2014, 07:46
Новичок на форуме
Отправить личное сообщение для rotorgames Посмотреть профиль Найти все сообщения от rotorgames
 
Регистрация: 30.07.2014
Сообщений: 5

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

Последний раз редактировалось rotorgames, 31.07.2014 в 07:50.
Ответить с цитированием
  #4 (permalink)  
Старый 31.07.2014, 09:37
Аватар для Tek
Tek Tek вне форума
Профессор
Отправить личное сообщение для Tek Посмотреть профиль Найти все сообщения от Tek
 
Регистрация: 22.02.2012
Сообщений: 212

Самое простое привязать через html:
<div ng-controller="parentController as parent">
    <div ng-controller="childController as child">
         {{parent.data}}
    </div>
</div>
Ответить с цитированием
  #5 (permalink)  
Старый 31.07.2014, 16:09
Новичок на форуме
Отправить личное сообщение для rotorgames Посмотреть профиль Найти все сообщения от rotorgames
 
Регистрация: 30.07.2014
Сообщений: 5

Всем спасибо, собственно уже решил проблему сам. Написал сервис который может удалять и соеденять scope с сохранением watchers. Производительность с кешированием dom, просто супер.
Ответить с цитированием
  #6 (permalink)  
Старый 17.08.2014, 19:12
Новичок на форуме
Отправить личное сообщение для rotorgames Посмотреть профиль Найти все сообщения от rotorgames
 
Регистрация: 30.07.2014
Сообщений: 5

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

https://github.com/rotorgames/angular-rg-cache-view
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление данных на странице после отсылки POST запроса ArtemKrass Firefox/Mozilla 6 08.10.2013 18:23
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
После загрузки данных Ajaxom не работают скрипты simple AJAX и COMET 2 12.04.2011 08:21
Вызов функции после изменения данных nematod AJAX и COMET 11 21.01.2011 09:23
[JavaScript] получение данных из адресной строки после знака # GiveMeABreak AJAX и COMET 2 16.09.2009 00:36