通常我們需要從列表中顯示項目,例如,您可以有幾個項目,每個用戶可以在其中一些項目上工作,分配項目時,我們添加projectfirst,然後使用projectId引用它們。處理列表項目(顯示和編輯)的正確方法?
當我開始玩Breezejs和Knockout時,我發現當有50多個項目時使用下拉(選擇)html元素是不實際的,並且在不允許用戶使用下拉菜單的情況下是不正確的改變價值。所以我拿下面的代碼從projectId中獲取項目名稱
itemName: function (items, item) {
var r = '';
if (item() == '') return r;
var match = ko.utils.arrayFirst(getLocal('projects', 'name', true), function (i) {
return i.id() === item();
});
if (match) r = match.name();
return r;
}
項目是本地預取和存儲的項目列表。 但我發現性能仍然不能接受,javascript很忙,我覺得arrayFirst是不夠高效的搜索?
現在我讓服務器端返回projectId和projectName,並在需要時顯示projectName,看起來更好,但除了數據冗餘之外,在保存更改時還有另一個問題。
任何建議什麼是正確的方法在這裏做?
謝謝
arrayFirst是一個簡單的循環遍歷你的回調函數,它不會成爲你的問題的原因,特別是只有50個項目。您是否使用瀏覽器的開發工具來分析您的JavaScript? –
70行370個選項,沒有profiler,javascript很忙。 – wyx2000
它在哪裏忙?遍歷370個項目的數組仍然很快,但執行回調可能不會。 –