EXTJS 4在组合框中呈现所选值的HTML

Jav*_*hez 10 html combobox extjs extjs4

你好,我有下一个问题,我想在一个组合框中渲染我的显示值的html,当我加载一个准备好html的商店时,它在我显示所有这些时呈现html,但是当我选择一个时,它显示了HTML.

当项目被选中时,我该怎么做才能呈现html?

以下是一些有助于解释不便之处的图片:

这是我要选择一个

http://i.stack.imgur.com/TcfRA.jpg

这是我选择一个

http://i.stack.imgur.com/Kzi9r.jpg

我正在渲染的Html是下一个:

<img class="io_img" src="/files/images/io-P.gif"/><div class="io_desc">hola</div></div>
Run Code Online (Sandbox Code Playgroud)

提前致谢.

PD:很抱歉没有显示图片,只显示链接,但我没有足够的声誉来直接显示图片.

Krz*_*tof 16

这需要很少的步骤.问题是ComboBox下面有输入字段,输入无法显示html.所以第一步是更改用div替换输入的模板.例如:

fieldSubTpl: [
    '<div class="{hiddenDataCls}" role="presentation"></div>',
    '<div id="{id}" type="{type}" ',
        '<tpl if="size">size="{size}" </tpl>',
        '<tpl if="tabIdx">tabIndex="{tabIdx}" </tpl>',
        'class="{fieldCls} {typeCls}" autocomplete="off"></div>',
    '<div id="{cmpId}-triggerWrap" class="{triggerWrapCls}" role="presentation">',
        '{triggerEl}',
        '<div class="{clearCls}" role="presentation"></div>',
    '</div>',
    {
        compiled: true,
        disableFormats: true
    }
]
Run Code Online (Sandbox Code Playgroud)

然后更改显示所选值的模板:

displayTpl: Ext.create('Ext.XTemplate', [ 
    '<tpl for=".">',
    '<img src="http://phpbb3.pl/adm/images/icon_edit.gif" />',
    '{[typeof values === "string" ? values : values["title"]]}',
    '</tpl>'
])
Run Code Online (Sandbox Code Playgroud)

另一件事是创建新的列表项模板.例如:

listConfig: {
    getInnerTpl: function() {
        return '<div class="search-item">' +
            '<h3><img src="http://phpbb3.pl/adm/images/icon_edit.gif" /><span>{[Ext.Date.format(values.lastPost, "M j, Y")]}<br />by {author}</span>{title}</h3>' +
            '{excerpt}' +
        '</div>';
    }
}
Run Code Online (Sandbox Code Playgroud)

最后一件事 - 您必须确保将值正确设置为div.为此你应该覆盖setRawValue方法:

setRawValue: function(value) {
    var me = this;
    value = Ext.value(value, '');
    me.rawValue = value;

    // Some Field subclasses may not render an inputEl
    if (me.inputEl) {
        // me.inputEl.dom.value = value;
        // use innerHTML
        me.inputEl.dom.innerHTML = value;
    }
    return value;
}
Run Code Online (Sandbox Code Playgroud)

请注意,新模板不包含任何input字段,因此不会提交值.如果你需要使用这样的组合形式,你应该在某处添加隐藏的输入fieldSubTpl并为其设置值setRawValue.

工作样本:http://jsfiddle.net/lolo/8Xs5h/1/