2013-05-30 6 views
6

मेरा डुरंडल आधारित एसपीए व्यूमोडल्स के सक्रिय कार्य में विभिन्न async AJAX कॉल करता है। मैं सक्रिय फ़ंक्शन से क्यू का उपयोग करके एक वादा वापस कर रहा हूं।वादे के साथ काम करते समय Durandal स्प्लैश स्क्रीन

function activate(){ 
     return Q.fcall(['getPersons', 'getAgenda']); 
} 

function getPersons(){ 
     var defer = Q.defer(); 
     $.ajax({ 
     //omitting most of the settings 
     success: function(data){ 
       defer.resolve(data); 
     }, 
     error: function(xhr, status){ 
       defer.reject(status); 
     } 
     }); 

    return defer.promise; 
} 

इसी तरह का कोड getAgenda फ़ंक्शन में भी मौजूद है। यह सब ठीक काम करता है और मेरी स्क्रीन संक्रमण में समस्या है। परेशानी है, मेरा मिलता है एजेंडा में कुछ समय लगता है (2 से 3 सेकंड)। स्प्लैश स्क्रीन दिखाई नहीं दे रही है, स्क्रीन में रहता है, जहां यह 2 या 3 सेकंड के लिए संक्रमण में था।

मेरी स्प्लैश स्क्रीन सरल है और साइट लोड होने पर पहली बार दिखाती है। कोई विचार?

उत्तर

4

आपकी स्प्लैश स्क्रीन मानना ​​ के समान दिखता है, तो यह एक बार स्प्लैश स्क्रीन के रूप में है जो app.start में ओवरराइट हो जाता है।

<div id="applicationHost"> 
    <div class="splash"> 
     <div class="message"> 
      Durandal Starter Kit 
     </div> 
     <i class="icon-spinner icon-2x icon-spin active"></i> 
    </div> 
</div> 

आप शायद किसी प्रकार के लोडिंग सूचक की तलाश में हैं। उदाहरण के लिए नमूनों में router.isNavigating के आधार पर लागू किया गया है, इसलिए आप में vm समान isLoading अवलोकन योग्य बनाते हैं, जिसे आपने एसिंक कॉल से पहले सत्य पर सेट किया था और गलत होने पर गलत किया था।

https://github.com/dFiddle/dFiddle-1.2/blob/gh-pages/App/samples/shell.html#L13

<div class="loader pull-right" data-bind="css: { active: router.isNavigating }"> 
    <i class="icon-spinner icon-2x icon-spin"></i> 
</div> 
+0

Thats यह ... काम करता है जादू की तरह! धन्यवाद! –

1

मैं Durandal नेविगेशन में Pacejs एकीकृत करने के लिए चाहता था, और यह router.isNavigating

यहाँ करने के लिए बहुत आसान धन्यवाद समाप्त हो गया सार https://gist.github.com/volak/4aca442373b4216a52b5

संबंधित मुद्दे