2016-11-28 3 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をラップしようとしていますし、その後、私の考えでは、これを指定することでしたページ上の日付ピッカーを使用するときにtrueになるようにします。

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

renderTplプロパティの上の値でshowExtraをtrueに指定しても、条件は満たされません。条件が満たされるように、どうすれば値を渡すことができますか?

答えて

2

使用renderDataあなたのTPL

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

またはあなたのオーバーライドされたコードの中にそれを行うことであろう、よりきれいな方法のカスタムプロパティを設定します。 Ext.picker.Dateの元のbeforeRender()を見てください。あなたが内側にあなたのporpertyを設定する必要はありません。その場合は

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

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

:あなたのような何かを行うことができ、あなたのオーバーライドファイルで

... 

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を設定していますが、日付ピッカーで使用します。これらは2つの別々のコンポーネントです。 Ext.form.field.Dateソースを見てください。ピッカーを作成し、すべての種類のプロパティを渡すcreatePicker()メソッドがあります。あなたはその方法を無効にすることができます – sofajazz

+0

私は自分の答えを更新しました。オーバーライドでrenderDataを更新する場合は、renderDataを使用する必要はありません。 – sofajazz

関連する問題