2013-10-01 5 views
3

ember-leaflet 라이브러리에 대한 질문과 올바른 팝업 사용에 대한 질문이 있습니다.리플렛 팝업의 렌더링보기 또는 핸들 막대 템플릿

ember-leaflet website의 다음 예제는 라이브러리를 사용하여 마커 및 링크 된 팝업을 추가합니다. 또한 컨텐츠 바인딩을 통해 팝업에 대한 컨텐츠를 추가하는 방법을 보여줍니다.

RadMarkersApp = Ember.Application.create(); 
RadMarkersApp.MarkerLayer = 
    EmberLeaflet.MarkerLayer.extend(
    EmberLeaflet.DraggableMixin, 
    EmberLeaflet.PopupMixin, { 
    popupContentBinding: 'content.title' 
}); 

RadMarkersApp.MarkerCollectionLayer = 
    EmberLeaflet.MarkerCollectionLayer.extend({ 
    content: [{ 
     location: L.latLng(40.7127, -74.0060), 
     title: 'City Hall'}], 
    itemLayerClass: RadMarkersApp.MarkerLayer 
    }); 

RadMarkersApp.IndexView = 
    EmberLeaflet.MapView.extend({ 
    childLayers: [ 
     EmberLeaflet.DefaultTileLayer, 
     RadMarkersApp.MarkerCollectionLayer]}); 

지금은 여기에 popupContent 속성에 대한보기 또는 핸들 바 템플릿을 사용할 수 있도록하고 싶습니다. 누군가이 아이디어를 구현하는 방법을 알고 있습니까? 이 시나리오에 대한 모범 사례가 있습니까?

내 첫 번째 방법 :

App.MarkerLayer = 
    EmberLeaflet.MarkerLayer.extend(
    EmberLeaflet.PopupMixin, { 

    popupContent: function() { 
     // Render view (how to get?) or handlebars template 
     return Ember.TEMPLATES['popup-content'](this.get('content')) 
    }.property() 
    }); 

이 다음과 같은 오류에 이르게 :

Uncaught TypeError: Cannot call method 'push' of undefined 

희망 누군가가 도움이 될 수 있습니다. 고마워요!

답변

3

저는 문서에서 유용한 기능을 찾을 수없는 작은 바보입니다.

나는 조금 해킹 및 Ember.View#createElement의 도움으로이 문제를 해결할 수 있었다 :이 다른 사람을 도움이 될 것입니다

App.MarkerLayer = EmberLeaflet.MarkerLayer.extend(EmberLeaflet.PopupMixin, { 
    popupContent: function() { 
    view = this.view = this._parentLayer.createChildView('map-popup'); 
    view.set('context', this.get('content')); 
    Ember.View.states.inDOM.enter(view) 
    view.createElement(); 

    return view.get('element'); 
    }.property() 
}); 

희망.

+0

나에게 조금 "해커"가 보입니다. 그것은 엠버의 내부 상태를 망쳐 놓는 것처럼 보입니다 (나는 엠버의 신참으로 잘못 될 수 있습니다). 어느 경우이든이 일을하는 데 더 깔끔하고 나은 방법을 찾았습니까? – elsurudo

+0

다음과 같은 오류가 발생했습니다. "잡히지 않은 TypeError : Object [object Object]에 'createChildView'메서드가 없습니다." 팁? – elsurudo

+0

함수에서 첫 번째 행을 "view = this.view = this._parentLayer.createChildLayer (App.MapPopupView)"로 바꾸면이 문제가 해결되었습니다. 어쩌면 Ember 버전으로 인해 ... "defaultContainer 사용은 더 이상 지원되지 않습니다. [defaultContainer # lookup] 참조 : http://git.io/EKPpnA"라는 사용 중단 경고가 나타납니다. 그게 무슨 뜻인지 아직 모르겠지만 그것을 조사해야합니다. – elsurudo

관련 문제