Javascript.RU

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

Сообщение от nerv_ Посмотреть сообщение
Делаю вывод: это может способствовать улучшению производительности директивы ng-repeat.
Прошу прощения, но я не совсем понимаю как оно способствует улучшению производительности?
По-умолчанию по-моему работает логично:
If no tracking function is specified the ng-repeat associates elements by identity in the collection. It is an error to have more than one tracking function to resolve to the same key.
Переводить на стал т.к. лучше отписать оригиналом, чем ломать его своим переводом.
Ответить с цитированием
  #22 (permalink)  
Старый 10.02.2014, 11:53
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от STU
Переводить на стал т.к. лучше отписать оригиналом, чем ломать его своим переводом.
я сломаю:
Цитата:
If no tracking function is specified the ng-repeat associates elements by identity in the collection. It is an error to have more than one tracking function to resolve to the same key.
Если нет функция отслеживания, это указывает, что "ng-repeat" связывает элементы по идентичности в коллекции. Ошибка, если имеется более чем одна отслеживающая функция возвращающая тот же самый ключ.

Что такое "идентичность"? В рамках ангуляра отслеживание изменений по значению. А что такое отслеживание изменений по значению для массива, в котором лежат объекты?

та самая ошибка http://learn.javascript.ru/play/1LGDbc

тем не менее, этот пример http://learn.javascript.ru/play/Qmjpf показывает, что ангуляр пихает ключи в объекты для отслеживания (что не всегда уместно)

Проще всего исходники посмотреть или подебажить, но лениво
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #23 (permalink)  
Старый 10.02.2014, 13:10
STU STU вне форума
Новичок на форуме
Отправить личное сообщение для STU Посмотреть профиль Найти все сообщения от STU
 
Регистрация: 10.02.2014
Сообщений: 3

Сообщение от nerv_ Посмотреть сообщение
А что такое отслеживание изменений по значению для массива, в котором лежат объекты?
Спасибо, стало понятней. Фактически мы просто избавляемся от лишних вычислений, особенно если у нас массив объектов.
Ответить с цитированием
  #24 (permalink)  
Старый 17.07.2014, 16:55
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

$apply and $digest are both methods on AngularJS scopes that allow you to manually trigger the updates to bound properties on your scopes.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #25 (permalink)  
Старый 21.07.2014, 16:38
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Черт знает. Если посмотреть исходники
if (trackByExp) {
  trackByExpGetter = $parse(trackByExp);
  trackByIdExpFn = function(key, value, index) {
  // assign key, value, and $index to the locals so that they can be used in hash functions
    if (keyIdentifier) hashFnLocals[keyIdentifier] = key;
      hashFnLocals[valueIdentifier] = value;
      hashFnLocals.$index = index;
      return trackByExpGetter($scope, hashFnLocals);
    };
} else {
  trackByIdArrayFn = function(key, value) {
    return hashKey(value);
  };
  trackByIdObjFn = function(key) {
    return key;
  };
}

то в одном случае будет всегда срабатывать
trackByExpGetter($scope, hashFnLocals);

в другом —
hashKey(value);

Не уверен, что первая быстрее...
Ответить с цитированием
  #26 (permalink)  
Старый 29.07.2014, 16:36
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Shitbox2, ты хотя бы написал, что ведешь речь о ng-repeat =)

Сообщение от Shitbox2
Не уверен, что первая быстрее...
ну смотри, в случае
ng-repeat="item in array"

у тебя получается, что: если item is object, то к каждому item будет впиндюрен (непереводимое слово $$hashKey + создана функция слежения (привет Бараку Обаме)
а в кейсе вида
ng-repeat="item in array track by item.id"

будет создана только функция слежения

---

А еще я забавный паттерн "изобрел" для сборки мусора:
1. в директиве
function(scope, element, attrubutes) {
    element.bind('$destroy', scope.$watch(watcher, handler));
}

2. в контроллере
function($scope) {
    $scope.$on('$destroy', $scope.$watch(watcher, handler));
}

и все счастливы =)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #27 (permalink)  
Старый 29.07.2014, 16:37
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

nerv_, что думаешь насчёт https://github.com/Pasvaz/bindonce ?

я глянул демку, но особо не вникал
Ответить с цитированием
  #28 (permalink)  
Старый 29.07.2014, 16:48
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от melky
я глянул демку
я тоже глянул. И что-то разницы не увидел =)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #29 (permalink)  
Старый 29.07.2014, 17:00
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от nerv_ Посмотреть сообщение
я тоже глянул. И что-то разницы не увидел =)
то бишь ввод текста в поле и там и там тормозит, или нигде не тормозит?)

... а как бы убрать лаг при добавлении 2000 записей? пагинация\бесконечный скролл?

как можно разбить добавление элементов внутри ng-repeat по итерациям setTimeout ?


не шарю

Последний раз редактировалось melky, 29.07.2014 в 17:23.
Ответить с цитированием
  #30 (permalink)  
Старый 29.07.2014, 22:02
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от melky
то бишь ввод текста в поле и там и там тормозит, или нигде не тормозит?)
тормозит везде

Сообщение от melky
... а как бы убрать лаг при добавлении 2000 записей? пагинация\бесконечный скролл?
не делать 2000 записей. Пагинация. Можешь взять мой модуль.
либо оптимизации
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



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

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