Я использую Backbone + requirejs для создания моего приложения, в модуле ниже функция инициализации используется для загрузки функции инициализации из двух других модулей, называемых HomeView, InnerView, в этом модуле я бы как слушать события Backbone.history. но модуль не слушал такие события.Магистраль Слушайте события Backbone.history
маршрутизатор
// Filename: router.js
define([
'jquery',
'underscore',
'backbone',
'app/config',
'app/views/homeview',
'app/views/inner_view'
], function($, _, Backbone, Config, HomeView, InnerView) {
var AppRouter = Backbone.Router.extend({
initialize: function() {
},
routes: {
// Define some URL routes
'': 'defaultRoute',
'!/home': 'defaultRoute',
'!/activities': 'activities',
'!/activities/:id': 'activity',
'!/vacancies': 'vacancies',
'!/vacancies/:id': 'vacancies',
// 404, not found
'*actions': '404'
},
defaultRoute: function() {
//if this route is served from inner pages, we have to trigger "close:Inner"
Backbone.trigger('close:Inner');
Backbone.current = 'Home';
},
activities: function(){
Backbone.trigger('view:Activities');
Backbone.trigger('close:'+Backbone.current);
Backbone.current = 'Activities';
},
activity: function(id){
Backbone.trigger('close:' + Backbone.current);
Backbone.current = 'Activity';
},
vacancies: function(){
},
404: function(actions) {
// We have no matching route, lets display 404
$('.content_wapper').html(actions + " no such page on the system");
}
});
var initialize = function() {
HomeView.initialize();
InnerView.initialize();
Backbone.appRouter = new AppRouter();
Backbone.history.start();
};
return {
initialize: initialize
};
});
Что не так, что мешает мне слушать случае backbone.history внутри другой точки зрения?
Innerview Модуль
// Filename: views/boilerplate.js
define([
'jquery',
'underscore',
'backbone',
'app/config',
'text!templates/inner_header.html',
'bootbox',
'text!templates/breadcrumb.html',
'purl'
], function($, _, Backbone, Config, inner_header_template, bootbox, breadcrumbTemplate) {
var url = $.url(),
InnerView = Backbone.View.extend({
el: $(".header_content"),
template: _.template(inner_header_template),
initialize: function(options) {
Backbone.history.on('route:activities', this.activities);
},
render: function() {},
activities: function() {
alert('activities');
},
events: {},
close: function() {
$('.top_menu').remove();
$('.main_menu_inner').remove();
$('.content_container').empty();
$(this.el).unbind();
delete this.$el; //delete the jQuery wrapped object variable
delete this.el; //delete the variable reference to this node
}
});
var initialize = function() {
new InnerView();
};
return {
initialize: initialize
};
});
Я спрашивал об этом событии 'Backbone.history.on ('route: activities', this.activities);' и событие, которое вы упомянули, отлично подходит для меня :) – ahmedsaber111
Где вы запускали 'route: activities' мероприятие ? –
Внутри InnerView, который был инициализирован в функции инициализации модуля маршрутизатора – ahmedsaber111