2013-03-23 4 views
0

Я улучшал производительность страницы, но когда дело доходит до загрузки различных выпадающих списков, я теряю слишком много времени. есть ли более быстрый способ заполнить элементы управления, чем это?Есть ли более эффективный способ заполнения выпадающего списка, чем цикл?

my.service.data.controls это коллекция в памяти коллекций данных JSON из Ajax вызова для различных элементов управления в пар ключ/значение (номер, имя), дни, годы, приветствий и т.д.

$.each(my.service.data.controls.Days, function (i, p) { 
    days.push(new my.models.dropdown(selectedItem) 
    .Id(p.Id) 
    .Name(p.Id)); 
}); 

// for creating Position Models 
my.models.dropdown = function (selectedItem) { 
    var self = this; 
    self.Id = ko.observable(); 
    self.Name = ko.observable(); 
    // non-persitable properties 
    self.isSelected = ko.computed(function() { 
     return selectedItem() === self; 
    }); 
}; 
+2

Что такое 'days',' my. ... .Days', 'my. ... .dropdown'; что это за методы 'Id' и' Name'? Где именно вы заполняете что-нибудь? – Bergi

ответ

1

Я рекомендую профилировать ваш js (если вы еще этого не сделали), прежде чем пытаться его оптимизировать. Боли производительности могут происходить где-то еще в вашем коде.

Для начала откройте инспектор Chrome, выберите вкладку «профили» и нажмите кнопку «Пуск». Затем загрузите свою страницу, нажмите «Остановить» и посмотрите, что происходит!

+0

Я думаю, что ты на правильном пути. Я разделил загрузку моих выпадающих списков с одной большой функции на более мелкие, чтобы они загружались по мере необходимости. Так что теперь это смерть с помощью бумажной вырезки вместо одной раны. Какие инструменты для профилирования вы бы порекомендовали? –

+0

@JamesFleming любая удача профилирования ваших js? – Andbdrew

+0

Спасибо за продолжение. Как оказалось, моя проблема заключалась в том, что я подталкивал свой элемент к наблюдаемому массиву, который, в свою очередь, увольнял другие события слушателя. Решение состояло в том, чтобы заполнить весь массив в temp var, а затем заполнить наблюдаемым массивом этим временным массивом. –

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