2013-06-10 5 views
0

내 응용 프로그램에서 모든 모듈에 컨트롤러가있어 조정자로 작동합니다. 더 나은을 인스턴스화하는 장소가 될 것입니다 무엇 :이 같은Backbone Marionette에서 컨트롤러를 인스턴스화 할 위치는 어디입니까?

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(); 
     ...  
    } 
}); 
  • 또는 모듈의 초기화 방법 :이 같은 메인 컨트롤러에서

    1. Module1.addInitializer(function(){  
          Module1.controller = new Controller({ 
           ... 
          }); 
      }); 
      

    메인 컨트롤러에서 호출 :

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

    컨트롤러의 글로벌 인스턴스 하나를 갖고 있거나 필요할 때마다 컨트롤러를 만드는 것이 더 좋습니까? 혼란 스럽습니다. 제안 사항에 감사드립니다.

  • 답변

    0

    질문은 컨트롤러에만 국한된 것이 아닙니다. 내가 선호하는 것은 다른 모듈을 통해 공유 할 필요가 있고 작업 전반에 걸쳐 데이터를 보존해야하는 경우 전역 인스턴스 만 사용해야한다는 것입니다.

    이러한 필요가 없으면 리소스를 낭비해서는 안됩니다. 또한 글로벌 인스턴스가 적을수록 앱에서 더 쉽게 리소스를 유지 관리 할 수 ​​있습니다.

    희망 하시겠습니까?

    +0

    Ming Chan이 일반적인 문제를 설명해 주셔서 감사합니다. 정말 도움이되었지만 제 의도는 컨트롤러로 사용되는 Marionette 객체의 특정 문제에서 최상의 솔루션을 찾는 것이 었습니다. 나는 그것이 동일하다는 것을 이해한다. 그것은 응용 프로그램의 아키텍처에 달려있다. 모듈의 상태를 유지할 필요가 없다면 처음부터 매번 컨트롤러를 인스턴스화해야합니다. 그리고 전역 (응용 프로그램에서) 객체는 데이터 공유에만 유용 할 수 있습니다. – user2470983

    관련 문제