2016-11-28 4 views
1

확장 프로그램은 날짜 선택 도구 아래에 추가 텍스트를 표시해야하지만 내 애플리케이션의 모든 날짜 선택 도구는 표시하지 않아야합니다.renderTpl의 사용자 정의 속성

Ext.picker.Date 구성 요소를 재정의하고 추가 html로 추가 할 renderTpl 속성을 수정합니다. 그 후이

Ext.define('overrides.picker.Date', { 
override: 'Ext.picker.Date', 

showExtra: false, 

renderTpl: [ 
    '....existing html for picker here...', 

    '<tpl if="showExtra">', 
     'extra picker text', 
    '</tpl>', 
] 

}); 

그래서 구성 요소를 만들 때 부울 속성이 설정되어있는 경우에만 표시 그래서 내가 showExtra가 false 기본적으로 경우 상태에서 새 HTML을 포장하려고하고 내 생각은이를 지정하는 것이 었습니다 한 페이지에서 날짜 선택 도구를 사용할 때 참이어야합니다.

items: [{ 
     xtype: 'datefield', 
     value: this.effectiveDate, 
     showToday: false, 
     showExtra: true 
     }, 

renderTpl 속성 위의 값에서 showExtra를 true로 지정하는 경우에도 조건이 충족되지 않습니다. 조건이 충족 될 수 있도록 어떻게 값을 전달할 수 있습니까? 당신의 TPL

items: [{ 
    xtype: 'datefield', 
    value: this.effectiveDate, 
    showToday: false, 
    renderData: { 
     showExtra: true 
    } 
}, 

또는 더 깨끗한 방법을 사용자 지정 속성을 설정하는

답변

2

사용 renderData는 오버라이드 (override) 코드 내부에 있다고 할 것이다. Ext.picker.Date에서 원래 beforeRender()를 살펴보십시오. 당신이 내부에 porperty를 설정할 필요가 없습니다이 경우

beforeRender: function() { 
    this.callParent(arguments); 

    Ext.apply(me.renderData, { 
     showExtra: this.showExtra 
    }); 
} 

: 당신이 뭔가를 할 수있는 재정의 (override) 파일에서

... 

Ext.apply(me.renderData, { 
    dayNames: me.dayNames, 
    showToday: me.showToday, 
    prevText: me.prevText, 
    nextText: me.nextText, 
    days: days 
}); 

.... 

: "일자는 showToday"와 같은 일부 속성은이 된 renderData로 이동 renderData. 그냥 쓰기 :

items: [{ 
    xtype: 'datefield', 
    value: this.effectiveDate, 
    showToday: false, 
    showExtra: true 
}, 
+0

답장을 보내 주셔서 감사합니다. 이 속성은 현재 구성 요소에 설정되어 있지만 항상 기본값 (false) 인 것처럼 보입니다. renderData 객체를 통해 전달중인 새 값이 설정되지 않습니다. 다음 피들을 확인하십시오 https://fiddle.sencha.com/#view/editor&fiddle/1la4 – grimmus

+0

날짜 필드에 showDateLegend를 설정하고 있지만 날짜 선택 도구에서 사용하고 싶습니다. 이들은 두 개의 개별 구성 요소입니다. Ext.form.field.Date 소스를 살펴보십시오. 피커를 만들고 모든 종류의 속성을 전달하는 createPicker() 메서드가 있습니다. 해당 방법을 무시할 수 있습니다. – sofajazz

+0

답을 업데이트했습니다. 재정의에서 renderData를 업데이트하는 경우 renderData를 사용할 필요가 없습니다. – sofajazz