optimization - foreach large select slowing down knockoutjs databinding -
मेरी समस्या
मेरे पास एक मेज है जो वही चयन करें जिसमें प्रत्येक डेटा वस्तु के लिए सैकड़ों विकल्प पुनर्प्राप्त किए गए हैं। मैं डाटा के लिए डेटा को पुनः प्राप्त करने के लिए जावास्क्रिप्ट चर में चयन के लिए डेटा को पुनः प्राप्त करता हूं। समस्या यह है कि क्योंकि बहुत सारे विकल्प हैं, 200 + वस्तुओं के साथ एक डेटा सेट को पॉप्युलेट करने के लिए विकल्प 10 से अधिक सेकंड लेते हैं।
इस समस्या का निर्धारण करने के लिए मैंने जो किया है
मैंने डेटा बाध्यकारी रन का चयन करके बहुत जल्दी निकाल दिया है इसलिए मैं निश्चित है कि यह मेरी समस्या है
मेरा प्रश्न
इस प्रक्रिया को गति देने के लिए मैं और क्या कर सकता हूं?
मेरा कार्यान्वयन
& lt; तालिका id = "रिपोर्ट सूची" & gt; & Lt; tbody डेटा-बाइंड = 'foreach: रिपोर्ट सूची' & gt; & LT; टीआर & gt; & LT; टीडी & gt; & Lt; select class = "itemSelect" data-bind = "विकल्प: $ root.selectItemIDOptions, मान: मद आईडी, विकल्पगुण: 'मद आईडी', विकल्प पाठ: 'प्रदायक आईटम', विकल्पपरिवर्तन: 'आइटम चुनें'" / & gt; & Lt; / टीडी & gt; & Lt; td डेटा-बाइंड = "टेक्स्ट: विवरण" & gt; & lt; / td & gt; & Lt; / टीआर & gt;
मेरा दृश्य मॉडल
फ़ंक्शन रिपोर्टविंडमोडेल (रिपोर्टडेटा) {// ग्लोबलआइटमलिस्ट पहले से ही इस बिंदु पर सभी चुनिंदा विकल्प तैयार करने के लिए तैयार हैं .selectItemIDOptions = GlobalItemList; Self.reportList = ko.observableArray (); Var श्रृंगार = रिपोर्ट डेटा। श्रिंकजलिस्ट; Var rowArr = self.reportList (); के लिए (var i = 0; i & lt; Shrinkage.length; i ++) {rowArr.push (नया रिपोर्टरॉ (सिकोड़ें [i] .इसीआईडी, सिकन्गेज [i] .विवरण);} self.reportList.valueHasMutated ();} < / Code>
रो वर्ग
फ़ंक्शन रिपोर्टरॉ (मद आईडीआईडी, विवरण) {var self = this; self.ItemID = ko.observable (ItemID); self.Description = Ko.observable (विवरण);}
मेरी सिफारिश नहीं करने की कोशिश करेगी या डिबग नॉकआउट में बड़े डेटा सेट के संबंध में, लेकिन इसके बजाय आप जिस डेटा को भेज रहे हैं उसे रीफैक्टर कर सकते हैं।
क्या होगा यदि आप पहले डेटा कॉल के लिए प्रति रिकॉर्ड ~ 10 फ़ील्ड (बजाय 100) लेते हैं और फिर " विवरण प्राप्त करें "पंक्ति के आधार पर एक पंक्ति में अन्य 90 क्षेत्रों को पुनः प्राप्त करने के लिए उपयोगकर्ता के लिए लिंक प्राप्त करें।
यह मूल सूची को बहुत तेज़ी से लोड करेगा और अधिक विवरण के लिए प्रत्येक अगली कॉल भी तेजी से होगा।
Comments
Post a Comment