我正在探索 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();