2

在我的组合框中,我有这样的东西:

displayTpl: Ext.create('Ext.XTemplate',
                                    '<tpl for=".">',
                                        '{Nome} ({Valor})', 
                                    '</tpl>')

它工作正常,除了如果组合没有预先选择的值,它会显示这个“()”

因此,我尝试创建一个模板,当值为空时,它不会显示如下内容:

displayTpl: Ext.create('Ext.XTemplate',
                                    '<tpl for=".">',
                                        '<tpl if="this.isEmpty({Nome})">',
                                            '',
                                        '<tpl else>',
                                            '{Nome} ({Valor})',
                                        '</tpl>',
                                    '</tpl>',
                                    {
                                        isEmpty: function (value) {
                                            return value == '';
                                        }
                                    })

但是当评估 tpl (extjs-all-debug) 时,我不断收到错误消息“预期:”

compile: function (tpl) {
    var me = this,
        code = me.generate(tpl);

    return me.useEval ? me.evalTpl(code) : (new Function('Ext', code))(Ext);

关于如何做到这一点的任何想法?

4

2 回答 2

3

tpl 标记中的表达式不需要 { }。所以试试这个模板:

'<tpl for=".">',
    '<tpl if="this.isEmpty(Nome)">',
        '',
    '<tpl else>',
        '{Nome} ({Valor})',
    '</tpl>',
'</tpl>'
于 2012-10-18T13:20:09.023 回答
0

我已经解决了:)

displayTpl: Ext.create('Ext.XTemplate',
            '<tpl for=".">',
                '<tpl if="Nome != \'\'">',
                    '{Nome} ({Valor})',
                '<tpl else>',
                    '',
                '</tpl>',
            '</tpl>'
        )

因为我似乎无法理解传递给组合的值是什么,所以我认为如果它与空不同,则返回我想要的结构,如果不是,则返回''

于 2012-10-18T14:01:56.740 回答