के साथ मॉड्यूलर किए गए विचारों के माध्यम से नेविगेट करने के लिए Backbone.js राउटर का उपयोग करके मैं अपने विचारों और राउटर को अलग-अलग फ़ाइलों में अलग-अलग कर रहा हूं। मेरे पास एक main.js फ़ाइल है जो राउटर को तुरंत चालू करती है, और मेरा डिफ़ॉल्ट दृश्य भी प्रस्तुत करती है।require.js
मेरे राउटर ने ('देखें /: आईडी') देखा है और संपादित करें ('संपादित करें/आईडी') मार्ग के रूप में। Main.js में, जब मैं राउटर को तुरंत चालू करता हूं, तो मैं router.navigate ('देखें/1', सत्य) हार्डकोड कर सकता हूं और नेविगेशन ठीक काम करता है। मेरी दृश्य फ़ाइल में, जब मैं संपादन लिंक पर क्लिक करता हूं, तो मैं राउटर.नाविगेट ('व्यू /' + आईडी, सत्य) को कॉल करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि मुझे यह कैसे करना चाहिए।
मुझे बैकबोन.history.navigate ('व्यू /' + आईडी, सच) कॉल करने में सफलता मिली है, लेकिन मुझे नहीं लगता कि मुझे वैश्विक बैकबोन ऑब्जेक्ट पर भरोसा करना चाहिए।
मैंने अपने विचारों में ({राउटर: एपराउटर}) पारित करने का प्रयास किया ताकि मैं इस .options.router.navigate() का उपयोग कर सकूं, हालांकि यह मेरे लिए काम नहीं कर रहा था।
रूटर:
define(['./View', './Edit'], function (View, Edit) {
return Backbone.Router.extend({
routes: {
'View/:id': 'view',
'Edit/:id': 'edit'
},
view: function (id) {
var model = this.collection.get(id);
var view = new View({ model: model });
view.render();
},
edit: function (id) {
var model = this.collection.get(id);
var edit = new Edit({ model: model });
edit.render();
}
});
});
दृश्य:
define(function() {
return Backbone.View.extend({
template: Handlebars.compile($('#template').html()),
events: {
'click .edit': 'edit'
},
render: function() {
//Create and insert the cover letter view
$(this.el).html(this.template(this.model.toJSON()));
$('#View').html(this.el);
return this;
},
edit: function() {
Backbone.history.navigate('Edit/' + this.model.id, true);
},
});
});
हाय मैन, मैं आपके जैसे कुछ ऐसा कर रहा हूं, जो मेरे व्यू मॉड्यूल में router.navigate() का उपयोग करने का इरादा रखता है। और अंत में आप इसे कैसे प्राप्त किया? अग्रिम में Thx बहुत ज्यादा। – chaonextdoor
मैं बैकगोन.history.navigate का उपयोग कर समाप्त हुआ। चूंकि मैं विचारों, राउटर और मॉडलों के लिए अलग-अलग फ़ाइलों में अपने विचारों को अलग कर रहा हूं, और उन्हें लोड करने के लिए require.js का उपयोग कर रहा हूं। राउटर, या मेरे सभी विचारों पर एक ईवेंट ऑब्जेक्ट पास करने में बहुत अधिक परेशानी थी। ग्लोबल सबसे ज्यादा समझ में आया, क्योंकि बैकबोन पहले से ही वैश्विक नामस्थान में था। – MrGrigg
तो backbone.history.navigate router.navigate के बराबर है? – chaonextdoor