Използвам BackboneJS с RequireJS за приложение, което създавам.
Файл App
инициализира рутера:
// Define application router
var router = new AppRouter();
Backbone.history.start();
След това рутерът поема контрола върху системните действия.
var App = Backbone.Router.extend({
routes: {
"project/:id": "getProject",
"projects": "getProjects",
"*actions": "defaultRoute"
},
getProject: function (id) {
// dashboard.set('some_key', 'some_value');
},
getProjects: function () {
// dashboard.set('some_key', 'some_value');
},
defaultRoute: function () {
// dashboard.set('some_key', 'some_value');
}
});
Добавих Dashboard
модел и изглед, които използвам за показване на глобална информация за състоянието на моята система във всеки един момент. (Това ще се намира в горната част на прозореца). Неговият изглед следи модела си за промяна на стойностите и повторно изобразяване, когато е необходимо. Това работи добре.
Искам да избегна необходимостта да пренаписвам това ever след първоначалното ми създаване на обект:
var dashboard = new DashboardModel();
var dashboardView = new DashboardView({ model: dashboard });
$('#dashboard-placeholder').html(dashboardView.render().el);
Това, от което се нуждая обаче, е да имам достъп до този обект навсякъде (екземпляр на моя Dashboard
модел). В момента го инициализирам в App
, но нямам достъп до него в рутера, ако направя това. Наистина не искам да го дефинирам В рутера, защото това не ми се струва правилната задача, която рутерът да изпълнява.
Как и къде да дефинирам този екземпляр на моя Dashboard
модел?