2011-04-30 11 views
6

मेरे पास authenticated नामक एक नियंत्रक संपत्ति है जो false पर डिफ़ॉल्ट है। हालांकि, मेरे लॉगिन दृश्य में मुझे इसे true पर सेट करने में सक्षम होना चाहिए। इसके अलावा, मेरे लॉगआउट दृश्य में मुझे इसे false पर सेट करने में सक्षम होना चाहिए। मैं इस संपत्ति को देखने के भीतर कैसे उजागर कर सकता हूं?backbone.js - एक दृश्य से नियंत्रक गुण

var Controller = Backbone.Controller.extend({ 
    ... 
    authenticated: false, 

    login: function() { 
     if(this.authenticated) 
     { 
      location.hash = '!/dashboard'; 
     } else { 
      new LoginView(); 
     } 
    }, 

    logout: function() { 
     $.post('/admin/logout', {}, 
     function(resp){ 
     }, "json"); 

     this.authenticated = false; 
     location.hash = '!/login'; 
    } 
    ... 
}); 

उत्तर

7

आपका नियंत्रक सही ढंग से लॉगिन और लॉगआउट कार्यक्षमता कर रहा है। आपको बस इतना करना है कि आपके पास फायर बैकबोन.जेएस घटनाएं हैं और नियंत्रक को उनको प्राप्त करने के लिए पंजीकृत किया गया है।

var loginView = new LoginView(...); // params as needed 
loginView.bind("login_view:login", this.login); 
loginView.bind("login_view:logout", this.logout); 
loginView.render(); 

इसके अलावा, आपको विश्वास दिलाता है कि नियंत्रक के ईवेंट प्रबंधित करने की स्थापना की है की जरूरत है, तो कुछ इस तरह अपने इनिशियलाइज़ समारोह में की जरूरत है:

अपने नियंत्रक में

कहीं, आप की तरह कुछ की जरूरत है

_.extend(this, Backbone.Events); 
_.bindAll(this, "login", "logout"); 

आपके दृश्य को ईवेंट कोड की आवश्यकता होगी, इसलिए _.extend (...) को इसके आरंभ में कॉल करना सुनिश्चित करें।

आपके विचार में जहां उपयुक्त हो, आप की जरूरत:

this.trigger("login_view:login"); 

और

this.trigger("login_view:logout"); 

एक अंतिम नोट के रूप में, आप नियंत्रक लॉगिन और लॉगआउट सर्वर कॉल करना चाहते हैं। आपको दृश्य से केवल एक घटना है और संभावित रूप से एक आबादी वाला मॉडल या डेटा अन्यथा है। यह डेटा ट्रिगर स्टेटमेंट में पैरामीटर के रूप में पारित किया जाएगा और लॉगिन/लॉगआउट फ़ंक्शंस में एक तर्क के रूप में प्राप्त किया जाएगा। हालांकि, मैंने इसे कोड में शामिल नहीं किया है।

मूल रूप से आप डीओएम को प्रबंधित करने और नियंत्रक को एप्लिकेशन ईवेंट को बबल करने के दृश्य को देखना चाहते हैं। नियंत्रक फिर सर्वर के साथ मध्यस्थता कर सकता है और किसी भी आवश्यक विचारों का प्रबंधन कर सकता है।