प्रश्न: मैं अपने कोड को कैसे बना सकता हूं ताकि नॉकआउट बाइंडिंग लागू न हो जाएं जब तक कि व्यूमोडेल के सभी प्रश्न निष्पादित नहीं किए जाते?knockout.js applicationbindings हवा जेएस प्रश्नों के पूरा होने के बाद
अद्यतन: कुछ और शोध और प्रयोग के बाद मुझे लगता है कि किसी डिफरर्ड फ़ंक्शन की लाइनों के साथ कुछ उपयोग करना काम कर सकता है। मैंने कुछ कार्यान्वयन की कोशिश की है, हालांकि जब तक सभी क्वेरी परिणामों को संसाधित नहीं किया जाता है, तब तक यह केवल तब तक स्थगित हो जाता है जब तक क्वेरी को कॉल नहीं किया जाता है। मैं स्पष्ट रूप से यहां कुछ गलत कर रहा हूं लेकिन मेरा जावास्क्रिप्ट फू कमजोर है।
टेक्नोलॉजीज का प्रयोग किया: इकाई की रूपरेखा 5 डब्ल्यू/ओरेकल, नेट 4 जाल एपीआई, 2.2 नॉकआउट, हवा 0.71.3
स्थिति: ब्रीज एक वेब एपीआई विधि है जो पुन: प्राप्त करता कॉल करने के लिए किया जा रहा है पीओसीओ की एक संख्यात्मक, एक नॉकआउट अवलोकन योग्य सरणी को पॉप्युलेट करता है, और सरणी दृश्य में एक चुनिंदा नियंत्रण के लिए बाध्य है।
समस्या: हवा की क्वेरी पूरी नहीं हुई है और व्यूमोडेल बाइंडिंग को दृश्य में लागू करने से पहले नॉकआउट अवलोकनों को पॉप्युलेट नहीं किया गया है। जब क्वेरी परिणाम लौटाए जाते हैं, तो यूआई 5 से 7 सेकेंड के लिए उत्तरदायी नहीं होता है, जबकि को देखा जा सकता है और इस प्रकार चयन नियंत्रण अद्यतन होता है। प्रवेश के आधार पर इस मुद्दे होने के लिए ... प्रतीत होता है
cshtml फ़ाइल:
<select data-bind="options: $root.brokers, value: 'id', optionsText: 'name'">
<script data-main="/BrokerCommission/Scripts/app/main" src="/BrokerCommission/Scripts/require.js"></script>
main.js:
requirejs.config(
{
// well-know paths to selected scripts
paths: {
'breeze': '../breeze.debug', // debug version of breeze
'text': '../text'// html loader plugin; see http://requirejs.org/docs/api.html#text
}
}
);
define(['logger', 'text', 'breeze'], function(logger) {
require(['vm.muni'],
function()
{
logger.info('applying bindings');
ko.applyBindings(my.vm);
});
vm.muni मेरी ViewModel जावास्क्रिप्ट फ़ाइल है।
getAllBrokers = function() {
dataservice.getBrokers()
.then(processBrokerQueryResults)
.fail(handleQueryErrors);
},
processBrokerQueryResults = function (data) {
logger.info("Start loading Brokers " + Math.round(new Date().getTime()/1000));
my.vm.brokers([]);
$.each(data.results, function (i, d) {
brokers.push(new my.Broker()
.id(d.id)
.name(d.name)
);
});
logger.info("End loading Brokers " + Math.round(new Date().getTime()/1000));
},
यहाँ है dataservice.js फ़ाइल से हवा क्वेरी:: यहाँ एक विधि एक प्रश्न exec से अवगत कराया जा रहा है
function getBrokers() {
var query = new entityModel.EntityQuery()
.from("GetBrokers")
//.orderBy("name");
return manager.executeQuery(query);
};
यह बिल्कुल समस्या हल हो गया! अस्थायी सरणी चाल चल रही थी। इसके अतिरिक्त, पूरी प्रतिक्रिया, अन्य युक्तियों और संसाधनों के लिए धन्यवाद। मैं सिर्फ नॉकआउट और हवा दोनों के साथ शुरू कर रहा हूं और इन अनुप्रयोगों को ढांचे के लिए उचित तरीके से सीखने के लिए तत्पर हूं। जावास्क्रिप्ट जल्दी से हाथ से बाहर निकल सकता है। –
मैं पूरी तरह से समझता हूं :) आपको आवश्यकताजेएस सामान की आवश्यकता नहीं हो सकती है। मुझे बहुत पसंद है। लेकिन यह उन्नत है और कई ऐप्स कम परिष्कृत मॉड्यूलरिटी पैटर्न (उदा।, "मॉड्यूल का खुलासा") के साथ ठीक से मिल सकते हैं। आप बिना किसी बड़े प्रयास के आवश्यकता के लिए वहां से जा सकते हैं। सौभाग्य! – Ward