Можно ли объединить два Ext.XTemplate вместе? - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть xtype, который принимает две Ext.XTemplates (одна обязательная и одна необязательная), которые будут применены к набору значений. К сожалению, я не могу этого добиться, так как при последнем запуске шаблона значения будут перезаписаны. Можно ли добавить XTemplate в другой или заставить его запускаться на множестве значений одно за другим, не разрушая примененные предыдущие шаблоны?

Вот мой расширенный класс Ext.grid.Column:

LinkColumn = Ext.extend(Ext.grid.Column,{

    href: '',
    additionalTemplate: '',
    forceApplyTemplate:false,
    dateFormat: 'm/d/y H:i',

    constructor: function(config){
        Ext.QuickTips.init();

        var tpl = new Ext.XTemplate(
            '<tpl if="this.hasValue('+config.dataIndex+') == true">',
                '<tpl if="this.isDate('+config.dataIndex+') == false">',
                    '<a href="'+config.href+'">{'+config.dataIndex+'}</a>',
                '</tpl>',
                '<tpl if="this.isDate('+config.dataIndex+') == true">',
                    '<a href="'+config.href+'">{[fm.date(values.'+config.dataIndex+',"'+this.dateFormat+'")]}</a>',
                '</tpl>',
            '</tpl>',
            {
                compiled: true,
                hasValue: function(value){
                    return !Ext.isEmpty(value);
                },
                isDate: function(value){
                    return Ext.isDate(value);
                }
            }
        );

        LinkColumn.superclass.constructor.call(this,config);
        if (Ext.isEmpty(this.href)) { throw new Ext.Error('LinkColumn: href property is required') };

        this.renderer = function(value, p, r){
            if (!Ext.isEmpty(this.additionalTemplate)){
                var moreTemplate = (!Ext.isPrimitive(this.additionalTemplate) && this.additionalTemplate.compile) ? this.additionalTemplate : new Ext.XTemplate(this.additionalTemplate);
                value = (!Ext.isEmpty(moreTemplate)) ? moreTemplate.apply(r.data) : value;
                value = moreTemplate.apply(r.data);
            };
            //here where value gets overwritten:
            value = tpl.apply(r.data);

            return value;

        };
    },
});

1 Ответ

1 голос
/ 21 апреля 2011

Значение - это строка HTML, возвращаемая шаблоном. Применить, верно?Разве вы не можете просто сделать:

value += tpl.apply(r.data);

Что бы добавить результаты второго шаблона к результатам первого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...