对于不存在的JSON对象,在ext.xtemplate中使用'if'

时间:2012-12-28 20:18:48

标签: extjs3

我的JSON大部分时间都在这两个结构中:“type”和“comments”。有时它有“类型”,“调查”,“评论”。所以,我想使用“if”让ext.xtemplate显示它找到的那些。例如,我尝试过但不起作用:

new Ext.XTemplate(
    '<div style="text-align:justify;text-justify:inner-word">',
    '<b>Type:</b> {type}<br/>',
    '<tpl if="survey">',
        <b>Survey:</b> {survey}<br/>',
    '</tpl>',
    '<b>Comments:</b> {comments}',
    '</div>'

我也尝试过这些,但没有成功:

<tpl if="survey != {}">
<tpl if="survey != undefined">

怎么可能是检测不存在的物体的正确方法?,提前谢谢。

PS。我正在使用ExtJS 3.4

2 个答案:

答案 0 :(得分:2)

使用values局部变量,例如:

var tpl = new Ext.XTemplate(
    '<div style="text-align:justify;text-justify:inner-word">',
    '<b>Type:</b> {type}<br/>',
    '<tpl if="values.survey">',
        '<b>Survey:</b> {values.survey}<br/>',
    '</tpl>',
    '<b>Comments:</b> {values.comments}',
    '</div>'
);

values外,还有其他可用变量,在某些情况下有用:parentxindexxcount

预处理后的模板作为函数执行,模板如下所示:

function (values, parent, xindex, xcount){ // here are values, parent, etc
    with(values){ // each property of values will be visible as local variable
        return [
            '<div style="text-align:justify;text-justify:inner-word"><b>Type:</b> ',
            (values['type'] === undefined ? '' : values['type']),
            '<br/>',
            this.applySubTemplate(0, values, parent, xindex, xcount), // each <tpl> is converted into subtemplate
            '<b>Comments:</b> ',
            (values.comments === undefined ? '' : values.comments),
            ''
        ].join('');
    }
}

这些知识通常有助于理解XTemplates。

上述变量的示例用法:http://jsfiddle.net/gSHhA/

答案 1 :(得分:0)

我使用<tpl if="!!survey>"