EXTJS XTemplate

时间:2012-06-27 11:45:20

标签: extjs

我有一个方法如下:

createTip : function() {
    var eventTip = new Ext.XTemplate(
        '<tpl if="EventType == \'ONE\'">', 
        '<p> This is event one </p>',
        '</tpl>',
        '<tpl if="EventType == \'Two\'">', 
          return null;
        '</tpl>' 
    );

    return eventTip;

}

我想要做的是如果EventType为'TWO',则使该方法返回null。这可能吗?

就像上面的代码一样。我知道这是不可能的,但无论如何都要这样做。几乎如果EventType是两个,我不希望创建一个xtemplate。

由于

2 个答案:

答案 0 :(得分:0)

applyDataToMyTemplate: function(data){
  if (data.EventType === 'Two'){
    return null; //or '', or false, or whatever you need
  } else {
     return this.createTip().apply(data); //or some such hackery
   }

}

答案 1 :(得分:0)

如果你真的需要返回null,似乎你可能需要XTemplate以外的东西。我不知道使用模板执行此操作的任何用例,如果xtemplate返回除了应该使用的html片段以外的其他内容,它应该会破坏大多数小部件。如果您只是在EventType为Two时不需要显示任何内容,那么您可以使用模板函数来调整生成的HTML,或者通过构建字符串来执行您想要的任何其他操作。这样做会丢弃提前创建部分dom元素的好处,以便重用XTemplate应该提供的:

new Ext.XTemplate(
    '{[this.buildTemplate(values)]}',
    {
        buildTemplate: function (values) {
            if (values.EventType === "One") {
                return "<p> This is event one </p>";
            } else {
                return '';
            }
        }
    }
)