在Backbone Marionette中实例化控制器的位置?

时间:2013-06-10 13:37:05

标签: oop controller marionette

在我的应用程序中,我在每个模块中都有控制器,作为调解员工作。 什么是实例化它们的更好的地方:

  1. 在这样的主控制器中:

    App.MainController = Marionette.Controller.extend({ 
        doSomething: function(){
            var controller = new App.Module1.Controller();
            controller.doSomething();
            ...
        },
        doSomethingElse: function(){
            var controller = new App.Module1.Controller();
            controller.doSomethingElse();
            ...       
        }
    });
    
  2. 或初始化模块的方法如下:

    Module1.addInitializer(function(){      
        Module1.controller = new Controller({
            ...
        });
    }); 
    
  3. 并从主控制器调用它:

        doSomething: function(){ 
          App.Module1.controller.doSomething();
        },
        doSomethingElse: function(){ 
          App.Module1.controller.doSomethingElse();
        },
    

    拥有一个控制器的全局实例是否更好,或者每次需要时都创建它们? 我糊涂了。 感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我猜你的问题比控制器更普遍。 我的偏好是,如果需要跨不同模块共享并且数据需要跨操作持久化,那么您应该只使用全局实例。

如果没有这样的需求,你不应该浪费资源来拥有它们。此外,您拥有的全局实例越少,维护应用程序中的资源就越容易。

希望有所帮助!