2012-11-13 16 views
5

मेरे ऐप में, अलग-अलग उपयोगकर्ता खाते हैं। मैं जो करने की कोशिश कर रहा हूं, loader.gif दिखाएं, जब तक .fetch() संसाधन url + से सामग्री प्राप्त कर रहा है + विचारों को प्रस्तुत करना और loader को प्राप्त करने के दौरान छुपाएं।बैकबोन fetch() सफलता कॉलबैक काम नहीं करता

अब, जब कोई उपयोगकर्ता में लॉग करता है, यह करें आइटम की अपनी सूची Todos.fetch द्वारा और सफलता कॉलबैक पर लाई गई है, loader.gif फ़ेड आउट।

$("#app").hide(); 
$(".loader").show(); 
Todos.fetch({ 
    success: function(){ 
      $("#app").show(); 
      $(".loader").hide(); 
     } 
}); 

यह उन जो कोई Todo आइटम नहीं हैं को छोड़कर सभी उपयोगकर्ता के लिए ठीक काम करता है। इन उपयोगकर्ताओं के लिए, सफलता कॉलबैक ट्रिगर नहीं किया गया है और loader.gif रहता है। क्या loader.gif छिपाने का कोई अन्य तरीका है?


ऐसा नहीं है कि success समारोह केवल जब एक भी मॉडल संग्रह में जोड़ा जाता है कहा जाता है मुझे लगता है। यदि संग्रह में जोड़ने के लिए कुछ भी नहीं है, तो success नहीं कहा जाता है।

+3

आपकी समस्या का प्रदर्शन करने के लिए कुछ कोड मदद करेंगे। – nikoshr

+0

कोड जोड़ा गया। हालांकि मुझे नहीं लगता कि कोड के साथ कोई समस्या है क्योंकि जब 'टोडो' संग्रह में जोड़ने के लिए कुछ है तो ioe लोड करने के लिए 'Todo' आइटम होते हैं, तो फ़ंक्शन कहा जाता है। हालांकि, जब 'टोडोस' संग्रह में जोड़ने के लिए कुछ भी नहीं है, तो फ़ंक्शन को कॉल नहीं किया जाता है। –

उत्तर

19

बैकबोनजेएस प्रतिनिधियों को सिंक करने के लिए लाता है। सिंक आपके स्वयं के उपयोग के लिए एक jqXHR ऑब्जेक्ट देता है।

तुम बस सकता है:

Todos.fetch({ 
    success: function(){ 
      $("#app").show(); 
      $(".loader").hide(); 
     } 
}).always(function() { $(".loader").hide() }); 

आप this blog post में इसके बारे में अधिक पढ़ सकते हैं।

इसके अलावा, सुनिश्चित करें कि संग्रह खाली होने पर आपका सर्वर वैध जेसन लौटाता है। अगर प्रतिक्रिया वैध जेसन नहीं है तो आपको विफलता मिल जाएगी।

+0

ग्रेट ढूंढें :) धन्यवाद एक टन और रेल का उपयोग कर रहा हूं जो ज्यादातर चीजों का ख्याल रखता है। –

+1

अच्छा लगता है! लेकिन ध्यान रखें कि यह (मॉडल, प्रतिक्रिया, विकल्प) तर्क प्रदान नहीं करता है जिसे आप सफलता-कॉलबैक में उम्मीद करेंगे। तो आपको मॉडल को फिर से एक्सेस करने का एक और तरीका ढूंढना होगा, अगर आप अपनी सफलता-कॉलबैक में यही कर रहे थे। – Micros

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