2012-04-27 6 views
6

У вас возникла проблема с прядильщиком, вращающимся в то время как ember.js делает это. У меня есть очень общий jsfiddle пример, иллюстрирующий проблему:Анимированные gif-паузы при загрузке объектов ember.js

http://jsfiddle.net/h4ZcZ/2/

я предполагаю, там должен быть простой способ, чтобы сделать эту работу, как ожидалось, но я не найти его. Я попытался использовать реализацию JavaScript/CSS spinner (spin.js) с теми же результатами. Я видел некоторые вещи, указывающие на то, что это, как правило, проблема с IE, но здесь это не так. Это происходит во всех браузерах в Windows, и я также тестировал Mac Safari.

+0

Сколько предметов в вашей коллекции? –

+0

50 элементов в коллекции, которая является объектом Ember.js. Каждый объект содержит массив других объектов, каждый из которых составляет 6. – BrianB

ответ

1

Проблема заключается в вашей петле - вы в основном запираете нить. Я бы использовал таймауты и разбил работу, которую нужно выполнить, чтобы другие возможности обработки на странице могли выполняться.

+0

Итерация массива - это не большое время сосать здесь (или, по крайней мере, это только часть проблемы). Реализация ember's handlebars.js выполняет итерацию через itemsController с тегом {{#each}}. Я посмотрел на некоторые уступающие шаблоны, используя setTimeout и [Шаблоны Ник Фитцджеральда] (http://fitzgeraldnick.com/weblog/35/), но это поможет только с загрузкой элементов в контроллер, а не с помощью Ember в DOM, который в мой конкретный случай - это то, где львиная доля блокировки потока происходит. – BrianB

+0

Ах, справедливая точка. Это имеет гораздо больший смысл. –

1

Что касается основной причины, то @ChristopherSwasey является правильным. Об этом я попросил несколько других разработчиков Ember. Нет решения, но есть две интересные мысли, которые могут помочь:

1) Один из разработчиков сообщил, что он столкнулся с этой проблемой и обошел ее, убедившись, что анимированный gif запущен до длительного выполнения javascript.

2) Еще один разработчик предположил, что использование виртуализованного списка - это правильный путь, так что отображаются только видимые узлы. Тем не менее, я боюсь, что я еще не знаю класс с открытым исходным кодом Ember virtualized list.

Надеюсь, что это поможет.

+0

Загрузка gif до обновлений DOM от ember не влияет на меня. Также не влияет на пример js скрипки. – BrianB

Смежные вопросы