我正在探索 MarionetteJS 的 BBCloneMail 演示应用程序,但我没有看到事件如何触发呈现操作。我在这里看到了一些全球性的“表演”活动:
show: function(){
this._showAppSelector("mail");
Marionette.triggerMethod.call(this, "show");
},
但我没有看到 Marionette.triggerMethod 在哪里/如何导致呈现 Mail 组件。我试图为我的案例调用 triggerMethod,但我得到一个“无法调用未定义的应用程序”。为什么上面的调用适用于 BBcloneMail 应用程序。

我的案例的应用程序控制器:
MA.AppController = Marionette.Controller.extend({
初始化:函数(){
_.bindAll(this, "_showGenres");
},
显示:函数(){
如果(MA.currentUser){
MA.navbar.show(new MA.Views.Items.LogoutNavbar({model: MA.currentUser}));
}
别的
{
MA.navbar.show(新 MA.Views.Items.LoginNavbar());
}
this._showGenres();
},
_showGenres:函数(){
var categoryNav = new MA.Navigation.Filter({
地区:MA.filter
});
this.listenTo(categoryNav, "genre:selected", this._categorySelected);
类别导航.show();
MA.main.show(MA.composites.movies);
},
showMovieByGenre:功能(流派){
var movies = new MA.Controllers.MoviesLib();
那=这;
$.when(movies.getByCategory(genre)).then(that._showMovieList);
Backbone.history.navigate("#movies/genres/" + 流派);
},
_showMovieList:函数(电影列表){
var moviesLib = new MA.Controllers.MoviesLib({
地区:MA.main,
电影:电影列表
});
Marionette.triggerMethod.call(this, "show");
}
});
我在 init.js 中初始化应用程序控制器:
app = new MA.AppController();