ApplicationView
ルーター上のすべてのイベントをリッスンしたい。私がすればそれは動作します:
this.model.router.on('route:myroute1, 'update');
this.model.router.on('route:myroute2, 'update');
this.model.router.on('route:myroute3, 'update');
all
イベントをバインドしようとすると:
this.model.router.bind('all', 'update');
この恐ろしいエラーが発生しました:
TypeError: all[i].apply は関数ではありません
all[i].apply(all[i + 1] || this, args);
ビュー (requirejs モジュールとして定義):
define(['backbone', 'lodash'], function(Backbone, _) {
return Backbone.View.extend({
el: 'body',
initialize: function() {
this.model.router.bind('all', 'update');
_.bindAll(this, 'render', 'update');
this.render();
},
render: function() { },
update: function(route) {
this.$el
.find('.nav-collapse a[href=#'+ route +']')
.parent()
.addClass('active')
.siblings()
.removeClass('active');
}
});
});
これは、元のソース コードでエラーが発生する場所です。
// Execute "all" callbacks.
if (all) {
args = [event].concat(rest);
for (i = 0, length = all.length; i < length; i += 2) {
all[i].apply(all[i + 1] || this, args);
}
}