我有一个简单的骨干应用程序,我试图变成木偶。
在应用程序中定义了应用程序并在那里添加了区域,同样在初始化时尝试获取AppRouter如下:
iApp.addInitializer(function(options){
// Add Router
iApp.addRouter = new Mrouter();
});
iApp.on("start", function(options){
Backbone.history.start();
});
iApp.addRegions({
header : "#mainheader"
});
Now in AppRouter added a method referenced in controller as below:
define([
'marionette',
'backbone',
'jquery',
'controller/controller'
],function(Marionette,Backbone,Router,Controller){
var appRouter = Marionette.AppRouter.extend({
controller : new Controller(),
appRoutes : {
'' : 'mainpage'
}
...
现在在Controller中尝试访问App区域,以便我可以加载视图,如下所示:
define([
'marionette',
'backbone',
'underscore',
'jquery',
'../views/subviews/mheader',
'../mapp'
], function(Marionette,Backbone,_,$,Mheader,Iapp){
var iController = Marionette.Controller.extend({
initialize : function() {
console.log("Initialzier");
},
mainpage : function() {
Iapp.header.show(new Mheader());
// Add region or fix the view.
},
onClose : function() {
console.log("closing the contoller");
}
});
return iController;
控制器中的“标题”无法访问,我想我甚至打印了它即将出现的应用程序。
问题1. - 它是否不会创建App的循环依赖? 问题2. - 为什么App无法访问?
答案 0 :(得分:0)
我认为你应该把它添加到mapp.js文件中:
iApp.start();
答案 1 :(得分:0)
实际上我能够让这个工作,正如帖子建议的那样 - https://github.com/marionettejs/backbone.marionette/wiki/Using-marionette-with-requirejs - 我添加了require(mapp),它基本上确保了应用程序的负载。我很高兴我和木偶一起搬家。
答案 2 :(得分:-1)
您可以在控制器的索引方法(在任何需要的地方)内异步加载应用程序,而不是将其添加为模块的依赖项