2013-03-23 35 views
0

我一直在提高頁面的性能,但是當它涉及到裝載各種下拉菜單我失去了太多的時間。有沒有比這更快的方式來填充控件?是否有更有效的方式來填充下拉比循環?

my.service.data.controls是從一個Ajax調用在鍵/值對(ID,姓名),日,年,拜的各種控件JSON數據集合的內存中的集合,等

$.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','我... .Days','我... .dropdown'。;這些「Id」和「Name」方法是什麼?你到底在哪裏填充任何東西? – Bergi 2013-03-23 13:58:35

回答

1

我建議你剖析JS(如果你還沒有的話)你嘗試優化之前。性能問題可能源自代碼中的其他地方。

要開始,彈出打開Chrome檢查器中,選擇「配置文件」選項卡,然後單擊開始。然後加載你的頁面,點擊停止,看看有什麼!

+0

我認爲你在正確的軌道上。我將一個大函數的下拉菜單加載到較小的函數中,以便根據需要加載它們。所以現在是通過剪紙而不是單一刺傷的死亡。你會推薦哪些性能分析工具? – 2013-03-23 18:10:34

+0

@JamesFleming任何運氣剖析你的js? – Andbdrew 2013-03-27 20:06:36

+0

感謝您的跟進。事實證明,我的問題是,我是我推到項可觀察到的陣列,而後者又發射了其他監聽器事件。解決方案是將整個數組填充到一個臨時變量,然後用該臨時數組填充observableArray。 – 2013-04-03 16:21:51

相關問題