HeaderView
私のアプリケーションにはビューがあります。起動されたルートに応じて、ビューはカスタムの見出しを取得します。ビューはheaderview:titleChanged
イベントに登録されています。
headerview.js
var HeaderView = Backbone.View.extend({
el: $('#header-region'),
initialize: function() {
bus.on('headerview:titleChanged', function(args) {
this.setTitle(args.title);
}, this);
this.render();
},
setTitle: function(title) { this.$el.find('.title').html(title); },
render: function() { return this; }
});
router.jsで
var AppRouter = Backbone.Router.extend({
initialize: function() { this.route('', 'defaultRoute'); }
});
// trying to create it before AppRouter even got initialized
new HeaderView();
var appRouter = new AppRouter();
appRouter.on('route:defaultRoute', function() {
_routeHandlers.renderDefaultContentRegion();
});
Backbone.history.start();
router.jsで、_routeHandlers.renderDefaultContentRegion()
// trying to send message
bus.trigger('headerview:titleChanged', {title: 'heading text'});
問題は、最初にルーターが作成され、次にヘッダー ビューが作成され、結果としてheaderview:titleChanged
受信者が存在しないことです。
HeaderView
デフォルトルートが起動する前にレンダリングすることは可能ですか? どうすればそれを処理できますか?