2012-06-13 1 views
2

단일 페이지 사이트에 BackboneJS를 사용하고 싶습니다. 내가 사용하는 생각입니다 구조는이 일의 일반적인 방법이다BackboneJS 단일 페이지 사이트 :보기 연결 및 정리

# a simple example view 
class View1 extends Backbone.View 
    render: -> 
     @$el.html @template() 


class AppRouter extends Backbone.Router 
    routes: 
     "": "home" 
     "view1": "view1" 
     "view2": "view2" 

    home: -> 
     # init, render, attach to body. repeat for other controller actions 
     view = new HomeView() 
     view.render() 
     $("#pageWrapper").html view.el 

에로드 뷰에 대한 div#pageWrapper이 무엇입니까? 아니면 어떤 종류의 디자인 패턴을 사용할 수 있습니까? 내가 청소를 처리 havent, 내가 그것을 필요합니까? 아니면 단순히 페이지 래퍼의 html을 대체하는 부작용입니까?

답변

3

예,보기 닫기를 올바르게 처리하고 올바르게 제거해야합니다. 그렇게하지 않으면 메모리 누수와 "좀비"보기가 생기게됩니다.

나는 광범위하게 그것에 대해 서면으로 작성했습니다 :

http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/

그것의 요점은 당신이 직접보기에서보기를 청소 관리하고 표준화 된 프로세스를 사용한다는 것입니다 보기의 정리 메소드를 호출합니다.

예를 들어, I/제거 화면에 내 의견을 교환/표시하는 객체를 사용


Region = (function (Backbone, $) { 
    var currentView; 
    var el = "#mainregion"; 
    var region = {}; 

    var closeView = function (view) { 
     if (view && view.close) { 
      view.close(); 
     } 
    }; 

    var openView = function (view) { 
     view.render(); 
     $(el).html(view.el); 
     if (view.onShow) { 
      view.onShow(); 
     } 
    }; 

    region.show = function (view) { 
     closeView(currentView); 
     currentView = view; 
     openView(currentView); 
    }; 

    return region; 
})(Backbone, jQuery); 

그냥보기가에서 close 방법이 있는지, 그리고이 코드는 그것을 정리합니다 당신. 간단한 close 구현은 다음과 같습니다 귀하의 의견의 지금


Backbone.View.prototype.close = function(){ 
    this.remove(); 
    this.unbind(); 
    if (this.onClose){ 
    this.onClose(); 
    } 
} 

모두를 이렇게 가까이 방법이있다.

자세한 내용은 도움말을 참조하십시오.

0

예, 단일 페이지 사이트를 수행하는 일반적인 방법은 주어진 순간에 페이지를 렌더링 할 수있는 html 요소를 일부 포함하는 것입니다.

정리에 관해서는. 컨테이너 요소를 지우고 정리할 각보기 내에서 해당보기와 관련된 모든 이벤트의 바인딩을 해제해야하며, 예를 들어 ModelBinding을 사용하는 경우 해당보기도 바인딩 해제해야합니다. 그래서 기본적으로

정리 모든 서브 뷰 -이보기에 관하여> 때어 이벤트 -> 명확한 HTML

취급 정리 유령 전망과 일을 엉망으로 이벤트를 피하기 위해 중요하다.