2016-12-18 12 views
0

모든 뷰의 헤더 인 "GerTest"공유 GWT 위젯이 있습니다. 나는 다음과 같이 내 의견에 삽입 할 수주입 후 GWT 싱글 톤 위젯이 DOM에서 제거됩니다.

bind(HeaderView.class).asEagerSingleton();

- - 이것은 뷰가 표시됩니다 처음으로 잘 작동

@Inject 
public DashboardViewImpl(HeaderView headerView) { 
    this.headerView = headerView; 
    initWidget(dashboardViewUiBinder.createAndBindUi(this)); 
} 

나는 통해 GIN를 통해 인스턴스화합니다. 그러나 장소를 변경 한 다음 "HeaderView"가 더 이상 표시되지 않으면 이미 표시된보기로 돌아갑니다. HTML을 검사하면 더 이상 DOM에 연결되지 않는다는 것을 알 수 있습니다.

내보기는 싱글로 묶여있다 - 나는 HeaderView는 하나의 부모를 가질 수되는 위젯으로 인해 다음 페이지를로드 한 후 DOM에서 제거되고 있음을 가정하고

bind(DashboardView.class).to(DashboardViewImpl.class).in(Singleton.class);

.

GWT 애플리케이션의 모든보기간에 위젯을 공유하는 올바른 방법이 있습니까?

답변

2

우선 컴파일러는 코드 최적화에 능숙하므로 위젯 싱글 톤을 만드는 것이 코드 크기 측면에서 많이 절약하지는 못합니다. 성능을 향상 시키지만 위젯이 매우 복잡하지 않으면 눈에 띄지 않습니다.

헤더가 어떤보기에도 속해서는 안됩니다. 앱 위젯에 직접 추가해야합니다 (예 : RootPanel에 추가 한 앱 위젯). 그런 다음 "보기"가 브라우저 창의 나머지 부분을 차지합니다. 사용자가 하나의보기에서 다음보기로 이동할 때 알아야 할 것을 헤더에 알릴 수 있습니다.