Sunday 15 June 2014

knockout.js - Changing too many observables at the same time crashes the browser -


मेरे पास 75 selectboxes हैं I उनमें से प्रत्येक एक

  MyModel.selectbox_1 = ko.observable (1) में एक डाटाबेस है; MyModel.selectbox_2 = ko.observable (2); MyModel.selectbox_3 = ko.observable (3); MyModel.selectbox_4 = ko.observable (3); ... MyModel.selectbox_75 = को.होर्सेबल (0);   

प्रत्येक selectbox में सिर्फ 4 विकल्प हैं।

मैं एक प्रश्न के उत्तर उपयोगकर्ताओं के अनुसार selectboxes को बदलने में सक्षम होना चाहता हूँ। उदाहरण के लिए उन सभी को रीसेट करने के लिए

  var variable_name = ""; के लिए (var i = 1; i & lt; 76; i ++) {variable_name = 'MyModel.selectbox_' + i; eval (variable_name) (0); }   

यदि मैं ऐसा करता हूं, तो ब्राउज़र कुछ सेकंड के लिए प्रतिक्रिया नहीं देता, और फिर यह काम करता है।

क्या कई selectboxes को एक साथ बदलने का एक बेहतर तरीका है?

वेबवर्कर्स के साथ हो सकता है?

धन्यवाद।

<पी > आपको कभी भी eval का उपयोग नहीं करना चाहिए:

आप इसे बदलकर इस मामले में आसानी से बच सकते हैं:

  var variable_name = ""; के लिए (var i = 1; i & lt; 76; i ++) {variable_name = 'MyModel.selectbox_' + i; eval (variable_name) (0); }  

से:

  के लिए (var i = 1; i & lt; 76; i ++) {MyModel ['selectbox_' + i] (0) ; }   

लेकिन आपको वास्तव में चयन के लिए एक सरणी का उपयोग करने पर विचार करना चाहिए:

  var i, Plan_Model = {plan_spread_options: ko.observableArray (['0' , '1', '2', '3', '4']), चयन करता है: []}; // init के लिए (i = 0; i & lt; 75; i ++) {Plan_Model.selects.push (को.सॉर्सवेबल (0)); } // बाइंडिंग को लागू करें ko.applyBindings (Plan_Model, $ ("# plan_bilgileri") [0]); // अपडेट के लिए (i = 0; i & lt; प्लानमैोडेल.सैक्ट। लांघ; i ++) {Plan_Model.selects [i] (2); }   

अपडेट किया गया (सरलीकृत HTML को भी देखें)।

No comments:

Post a Comment