У меня есть относительно быстрое приложение SproutCore, которое я пытаюсь сделать чуть чуть быстрее.Как предварительно загрузить элементы в ListView SproutCore?
Прямо сейчас, когда пользователь прокручивает мой SC.ListView, и они просматривают некоторые элементы списка, которые не были загружены с сервера (скажем, из отношения), приложение автоматически делает вызов на сервер для загрузки этих записей. Несмотря на то, что это быстро, все же есть короткий период времени, когда мои элементы списка пустые.
Я знаю, что могу заставить их сказать «Загрузка ...» или что-то в этом роде (и у меня есть), но мне было интересно: был способ предварительной загрузки моих «заставных» записей так что, когда пользователь прокручивает, элементы списка уже загружены?
My ListItemViews будет довольно большим (по пикселям), поэтому даже загрузка двойного количества данных не будет убийцей с точки зрения AJAX, и было бы неплохо, если бы пользователь прокрутил, содержимое было всегда загружаются (если они не прокручивают SUPER-SUPER-fast, и в этом случае у меня все в порядке, если они видят индикатор загрузки).
В настоящее время я нашел решение, добавив следующее в свой SC.ListView, но я заметил некоторые важные проблемы с производительностью на мобильных устройствах, и они напрямую связаны с внесением этого изменения, поэтому мне было интересно, есть ли лучший способ ,
contentIndexesInRect: function(rect) {
rect.height = rect.height * 2;
return sc_super();
}
Это фактически работает в тесте «test», где метод «render()» выдает некоторый базовый HTML, который предоставляется в объекте JSON (в основном просто div с некоторым текстом). Они определенно не являются «тяжелыми» видами позиций. На мобильном устройстве я могу использовать '* 1.05' без существенной проблемы, но все, что похоже на' * 1.1' или выше, приводит к замедлению. –
Попробуйте перейти к маршруту обезьяны-с-sc_super() и просто добавить один или два фактических элемента? (Это легко.) Посмотрите, какой порог вызывает проблемы? Также вы на 1.10? – Dave
Это действительно 1.10, и только 1-2 элемента не будут отображать какие-либо проблемы, так как это проблема с прокруткой (вы не можете прокручивать всего несколько элементов). Я отлаживаю еще немного и вижу, есть ли какие-то конкретные проблемы, которые я могу вывести. –