renderTpl 中的自定义 属性
Custom property in renderTpl
我需要在日期选择器展开时在其下显示一些额外的文本,但不是针对我应用程序中的每个日期选择器。
我正在覆盖 Ext.picker.Date 组件并修改 renderTpl 属性 以添加额外的 html。之后,我试图将新的 html 包装在 if 条件中,因此只有在创建组件
时设置了布尔值 属性 时它才可见
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,然后我的想法是在页面上使用日期选择器时将其指定为 true。
items: [{
xtype: 'datefield',
value: this.effectiveDate,
showToday: false,
showExtra: true
},
条件永远不会满足,即使我在 renderTpl 属性 上方的值中指定 showExtra 为真。我怎样才能传递值以满足条件?
使用 renderData 为您的 tpl 设置自定义属性
items: [{
xtype: 'datefield',
value: this.effectiveDate,
showToday: false,
renderData: {
showExtra: true
}
},
或者更简洁的方法是在覆盖的代码中执行此操作。查看 Ext.picker.Date 中的原始 beforeRender()。 "showToday" 等一些属性被移动到 renderData 那里:
...
Ext.apply(me.renderData, {
dayNames: me.dayNames,
showToday: me.showToday,
prevText: me.prevText,
nextText: me.nextText,
days: days
});
....
在您的覆盖文件中,您可以执行如下操作:
beforeRender: function() {
this.callParent(arguments);
Ext.apply(me.renderData, {
showExtra: this.showExtra
});
}
在这种情况下,您不需要在 renderData 中设置您的属性。随便写:
items: [{
xtype: 'datefield',
value: this.effectiveDate,
showToday: false,
showExtra: true
},
我需要在日期选择器展开时在其下显示一些额外的文本,但不是针对我应用程序中的每个日期选择器。
我正在覆盖 Ext.picker.Date 组件并修改 renderTpl 属性 以添加额外的 html。之后,我试图将新的 html 包装在 if 条件中,因此只有在创建组件
时设置了布尔值 属性 时它才可见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,然后我的想法是在页面上使用日期选择器时将其指定为 true。
items: [{
xtype: 'datefield',
value: this.effectiveDate,
showToday: false,
showExtra: true
},
条件永远不会满足,即使我在 renderTpl 属性 上方的值中指定 showExtra 为真。我怎样才能传递值以满足条件?
使用 renderData 为您的 tpl 设置自定义属性
items: [{
xtype: 'datefield',
value: this.effectiveDate,
showToday: false,
renderData: {
showExtra: true
}
},
或者更简洁的方法是在覆盖的代码中执行此操作。查看 Ext.picker.Date 中的原始 beforeRender()。 "showToday" 等一些属性被移动到 renderData 那里:
...
Ext.apply(me.renderData, {
dayNames: me.dayNames,
showToday: me.showToday,
prevText: me.prevText,
nextText: me.nextText,
days: days
});
....
在您的覆盖文件中,您可以执行如下操作:
beforeRender: function() {
this.callParent(arguments);
Ext.apply(me.renderData, {
showExtra: this.showExtra
});
}
在这种情况下,您不需要在 renderData 中设置您的属性。随便写:
items: [{
xtype: 'datefield',
value: this.effectiveDate,
showToday: false,
showExtra: true
},