2014-09-22 2 views
0

내 응용 프로그램에서는 LayoutView을 확장 할 수 있지만 프레임 제목 등을 유지하기위한 몇 가지 추가 논리가 필요하다는 것을 알게되었습니다. (내 목표는 Region 제목을 표시하는 것입니다). 자바의 스윙 관점에서 마리오네트 확장보기

LayoutView 나를 위해 JPanel,하지만 난

은 마리오네트보기를 확장 할 수있는 방법이 있나요 :-) JFrame 지망생으로 설정하고자 (일부 초기화를 수행) 할 그런 식으로 initialize 메서드는 사용되지 않은 채로 남아 있습니까? 이건 내 시도

(나는 것들이 작동하도록 FrameView.prototype.initialize 메소드를 호출하여 사용자를 귀찮게하고 싶지 않아) (하지만 위에서 언급 한 문제에서 고통) :

var FrameView = Marionette.LayoutView.extend({ 
    initialize: function() { 
    if(!this.title) this.title = null; 
    }, 
    setTitle: function(title) { 
    this.title = title; 
    this.trigger("change:title", title); 
    } 
}) 

가 이상적으로 FrameView가 결합 할 것 LayoutViewBackbone.Model입니다 (약간 다른 구문을 사용하더라도 setTitle과 같은 메서드를 사용할 수 있습니다). 보기의 Backbone.Model 부분은 제목, 아이콘 등을 유지하는 것보다 낫습니다.

나는 여전히 Backbone.js와 Marionette을 모두 배우므로 생각이 이상 할 수 있습니다. 나는 당신의 대답과 어떤 권고에 대해서도 나의 목표를 달성하는 방법에 대해 감사 할 것입니다.

답변

1

당신은 단순히 당신의 뷰 객체에 대한 기본 title 키를 원하는 경우, 키보기 프로토 타입을 확장 :

var FrameView = Marionette.LayoutView.extend({ 
    title: null, 
    setTitle: function(title) { 
    this.title = title; 
    this.trigger("change:title", title); 
    } 
}) 
+0

감사합니다 - 그것은 쉬운 것이 야! :-) 나에게 유일한 단점은 손으로 모든 필드 (제목, 아이콘, ...)를 구현하거나 자체적으로 Backbone.Model과 같은 기능을 구현해야한다는 것입니다. 내가 이미 끝낸 것을 재사용하고 싶다.) 클래스에서'Backbone.Model'을 섞어서 개별 필드를 신경 쓸 필요가 없도록하고 더 일반화를 달성 할 수있는 방법이 있습니까? –

+0

왜 처음에는'Backbone.Model'을 사용하지 않습니까? '/ varframe frame = new FrameModel = Backbone.Model.extend ({defaults : {}/* etc * /});' 'var frameView = 새 프레임 뷰 ({모델 : 새 프레임 모델()}), ' ' model */frameView.model.set ({title : 'Hey'}); ' – Yura

+0

이것은 디자인상의 이유로 실패합니다. 'FrameView'를'LayoutView'처럼 사용할 수 있기를 원합니다 - 몇 가지 추가 기능 만 있습니다. 뷰를 인스턴스화 할 때 모델을 명시 적으로 정의하면 사용자가 매번 인공 모델을 지정해야하므로 레이아웃 뷰의 API가 필요하지 않습니다. (또한 사용자가보기에 자신의 모델을 제공하려고 할 때 문제가 발생합니다.) –