将代码粘贴到Sencha fiddle内。查看读取ProblemElement的项目。
Ext.define('DropDownList', {
extend: 'Ext.form.ComboBox',
editable: false,
alias: 'widget.dropdownlist',
initComponent: function() {
this.callParent([arguments]);
},
onRender: function() {
this.callParent();
}
});
var states = Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data: [
{
"name": "Alabama"
},
{
"name": "Alaska"
},
{
"name": " <input value='ProblemElement'>"
}
]
});
Ext.application({
name: 'MyApp',
launch: function() {
Ext.create('Ext.form.Panel', {
items: [{
xtype: 'dropdownlist',
hideLabel: false,
title: 'ComboBox Test',
fieldLabel: 'Choose State',
store: states,
displayField: 'name',
htmlEncode: true,
renderTo: Ext.getBody()
}]
});
}
});
我面临的问题是下拉列表中显示的项目呈现为HTML。但是,在我选择它之后,它正确显示为文本(<input value='ProblemElement'>
),就像我想要的那样。
答案 0 :(得分:3)
下拉列表实际上是Boundlist,项目文本的显示方式由其getInnerTpl
方法控制。您可以使用listConfig
自定义组合的下拉菜单,以便内部文字通过Ext.String.htmlEncode
传递:
listConfig: {
getInnerTpl: function(displayField) {
return '{[Ext.String.htmlEncode(values.' + displayField + ')]}';
}
}