मैं मॉडल या डोम में कुछ बदलाव किए बिना backbone.js "event" को बढ़ाने का कोई तरीका ढूंढना चाहता हूं।एक बैकबोन.जेएस बढ़ाना घटना देखें
उदाहरण के लिए, मैं फेसबुक एसडीके को असीमित रूप से लोड कर रहा हूं। मैंने auth.login ईवेंट की सदस्यता ली है, और मेरे दृश्य में एक संदेश भेजना चाहता हूं कि उपयोगकर्ता ने लॉग इन किया है ताकि वह स्वयं को उचित रूप से पुनः प्रस्तुत कर सके।
मेरा विचार यह जैसा दिखता है:
window.CreateItemView = Backbone.View.extend({
el: $('#content'),
initialize: function() {
this.render();
},
render: function() {
// do something
return this;
},
setSignedRequest: function(signedRequest) {
//do something with signedRequest
}
});
मेरी फेसबुक कोड में, मैं ऐसा करते हैं:
FB.Event.subscribe('auth.login', function(response){
if (response.status === 'connected') {
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
window.signedRequest = response.authResponse.signedRequest;
if (window.view && window.view.setSignedRequest) {
window.view.setSignedRequest(window.signedRequest);
}
}
});
हालांकि, जबकि window.view मौजूद है, यह नहीं setSignedRequest विधि देख सकते हैं। मैंने सुनिश्चित किया है कि मेरी स्क्रिप्ट सही क्रम में लोड हो रही हैं। आश्चर्यजनक रूप से मेरे पास एक अलग पृष्ठ पर एक अलग पृष्ठ पर एक ही कोड है, लेकिन यह ठीक काम करता है। मैंने कोई अंतर नहीं देखा है जो इसके लिए जिम्मेदार होगा।
एक बेहतर समाधान कुछ प्रकार की घटनाओं को उठाना होगा और इसके लिए दृश्य सुनना होगा। हालांकि, मैं मॉडल पर परिवर्तन घटना का उपयोग नहीं करना चाहता क्योंकि हस्ताक्षरित Request मॉडल की संपत्ति नहीं होनी चाहिए। क्या इसे पूरा करने का एक बेहतर तरीका है?
ठीक है, '.trigger()' विधि है। आप अपना विचार एक कस्टम इवेंट को सुन सकते हैं, जिसे आप बाद में ट्रिगर करेंगे ... –