2012-08-27 3 views
1

라우터에서 초기화하는 메소드에 동일한 코드가 있습니다 (코드가 3 번 반복됩니다!).백본 라우터에서 반복 코드를 줄이는 방법

나는 3 개의 라우터를 가지므로, 코드를 리팩터링 (이름 변경 등)하려면 3 개의 개별 파일로 이동하고 각 파일에 변경 사항을 적용해야합니다.

initialize: => 
    # http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/ 
    @contentView = new Backbone.AppView(".js-content") 
    @searchView = new Backbone.AppView(".js-searchbox") 
    @sidebarView = new Backbone.AppView(".js-sidebar") 

이 코드를 건조 기술의 어떤 종류가 있습니까 : 여기

코드를 간다?

어떤 종류의 수퍼 클래스?

나는 coffeescript를 사용합니다.

+0

라우터 체크에서 호출 할 글로벌 함수를 만들 수 있습니다 : http://stackoverflow.com/questions/11626543/the-best-way-to-share-the-same-functionality-in-backbone/11627466 # 11627466 – fguillen

답변

2

당신은 다음 필요한 뷰와의 초기화를 할 요약서 라우터를 만들 필요가 특정 라우터를 확장해야합니다 :

그것은 당신이 모든 될 수 있습니다 여기에 인스턴스화하는 당신의 DOM의 일부처럼 보이는
var BaseRouter = Backbone.Router.extend({ 
    initialize : function(){ 
    console.log('Native Router!'); 
    this.contentView = new Backbone.AppView(".js-content"); 
    this.searchView = new Backbone.AppView(".js-searchbox"); 
    this.sidebarView = new Backbone.AppView(".js-sidebar"); 
    } 
}); 
var RouterOne = BaseRouter.extend({ 
    initialize : function(){ 
    BaseRouter.prototype.initialize.call(this); 
    //specific stuff 
    } 
}); 
var RouterTwo = BaseRouter.extend({ 
    initialize : function(){ 
    BaseRouter.prototype.initialize.call(this); 
    //specific stuff 
    } 
}); 

var router1 = new RouterOne(); 
var router2 = new RouterTwo(); 
1

'상위보기'의 '하위보기'로 간주됩니다. 이 토큰에 따라 @pageView = new BB.AppView (...)를 인스턴스화하고 @ pageView의 render() 메소드에서이 세 가지 '하위 클래스'를 인스턴스화하는 이유는 무엇입니까?

관련 문제