EXTjs操纵组合框中显示的数据

时间:2016-10-28 12:41:43

标签: javascript extjs combobox

美好的一天,我已经进入了之前在EXTjs中完成的一个新项目,我对此很陌生,而且我正在努力探索任何事情。

我今天的问题是: 我有一个定义了tpl的面板,其中有几个函数可以操作tpl中的类(如果某个变量为true或false,则显示一个图标而不是另一个图标)。 现在我不得不将相同的逻辑转换为组合框,我遇到了一些问题:

如果我使用tpl,我会获得相同的视觉效果,但我无法选择任何项目:

tpl: [
    '<tpl for=".">',
        '<div class="x-publisher {[this.renderColor(values.visible)]}">',
            '<div class="x-publisher-text">{name}</div>',
            '<div class="x-publisher-close fa {[this.renderIcon(values.visible)]}"></div>',
        '</div>',
    '</tpl>',
    '<div class="x-clear"></div>',
    {
        disableFormats: true,
        renderColor: function(visible){
            return visible ? 'visible' : '';
        },
        renderIcon: function(visible){
            return visible ? 'fa-eye-slash' : 'fa-eye'
        }
    }
],
itemSelector: 'div.x-publisher',
listeners: {
     select: 'somefunctioncalled'

},

我明白使用组合框我必须使用listconfig和itemtpl thingy,这样:

listConfig: {
        itemTpl: [
            '<div class="x-publisher {visible}"><div class="x-publisher-text">{name}</div><div class="x-publisher-close fa fa-eye"></div></div>'

                ]

                }

但是这样做,我了解到我无法在itemtpl中定义任何功能...... 所以,我的想法是在将{visible}变量传递给itemtpl之前操纵它。

商店是这样的:

store: { fields: [{ name:'name' }, { name: 'id', persist: false }, { name: 'regionalId' }, { name:'visible', type: 'boolean'}],
                                autoLoad: true,...

现在,是否有一种(简单的)方式来改变这种&#34;可见&#34;变量到字符串&#34;可见&#34;如果它是真的或其他东西,如果它是假的? 或者...有没有办法模拟第一个行为,我的意思是当我使用itemTpl时添加某种自定义函数(我学会了它们被称为成员函数)? 更改图标也存在问题,但我可以在此阶段忽略它。

你可以帮帮我吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我在itemtpl中使用了一些逻辑,似乎按预期工作:

itemTpl: [
            '<div class="x-publisher',
            '<tpl if="visible == true"> visible</tpl>',
            '"><div class="x-publisher-text">{name}</div><div class="x-publisher-close fa fa-eye"></div></div>'

        ]