Цитата:
По-умолчанию по-моему работает логично: 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. Переводить на стал т.к. лучше отписать оригиналом, чем ломать его своим переводом. |
Цитата:
Цитата:
Что такое "идентичность"? В рамках ангуляра отслеживание изменений по значению. А что такое отслеживание изменений по значению для массива, в котором лежат объекты? :) та самая ошибка http://learn.javascript.ru/play/1LGDbc тем не менее, этот пример http://learn.javascript.ru/play/Qmjpf показывает, что ангуляр пихает ключи в объекты для отслеживания (что не всегда уместно) Проще всего исходники посмотреть или подебажить, но лениво :) |
Цитата:
|
|
Черт знает. Если посмотреть исходники
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); Не уверен, что первая быстрее... |
Shitbox2, ты хотя бы написал, что ведешь речь о ng-repeat =)
Цитата:
ng-repeat="item in array" у тебя получается, что: если item is object, то к каждому item будет впиндюрен (непереводимое слово :) $$hashKey + создана функция слежения (привет Бараку Обаме) а в кейсе вида ng-repeat="item in array track by item.id" будет создана только функция слежения --- А еще я забавный паттерн "изобрел" :D для сборки мусора: 1. в директиве function(scope, element, attrubutes) { element.bind('$destroy', scope.$watch(watcher, handler)); } 2. в контроллере function($scope) { $scope.$on('$destroy', $scope.$watch(watcher, handler)); } и все счастливы =) |
|
Цитата:
|
Цитата:
... а как бы убрать лаг при добавлении 2000 записей? пагинация\бесконечный скролл? как можно разбить добавление элементов внутри ng-repeat по итерациям setTimeout ? не шарю :( |
Цитата:
Цитата:
либо оптимизации |
Часовой пояс GMT +3, время: 01:39. |