ExtJS6 — Сетка tpl, отображающая класс div в виде текста

#extjs #extjs6-modern #extjs-grid

Вопрос:

Я пытаюсь привести пример Ext.grid.Grid из extJS документов. Я не могу понять, почему элемент tpl также отображается div в виде текста.

 Ext.create('Ext.data.Store', {
    storeId:'employeeStore',
    fields:['firstname', 'lastname', 'seniority', 'department'],
    groupField: 'department',
    data:[
        { firstname: "Michael", lastname: "Scott",   seniority: 7, department: "Management" },
        { firstname: "Dwight",  lastname: "Schrute", seniority: 2, department: "Sales" },
        { firstname: "Jim",     lastname: "Halpert", seniority: 3, department: "Sales" },
        { firstname: "Kevin",   lastname: "Malone",  seniority: 4, department: "Accounting" },
        { firstname: "Angela",  lastname: "Martin",  seniority: 5, department: "Accounting" }
    ]
});

Ext.create('Ext.grid.Grid', {
    title: 'Column Template Demo',
    store: Ext.data.StoreManager.lookup('employeeStore'),
    columns: [{
        text: 'Full Name',
        tpl: '{firstname} {lastname}'
    }, {
        xtype: 'templatecolumn',
        text: 'Department (Yrs)',
        tpl: '<div class="test">{department} {seniority}</div>'
    }],
    height: 200,
    width: 300,
    renderTo: Ext.getBody()
});


 

Output Я ожидаю <div class="test"> , что не должен появляться. Я что-то здесь упускаю?

введите описание изображения здесь

Ответ №1:

В современном инструментарии содержимое ячеек по умолчанию кодируется в формате html. В вашем случае вам необходимо установить в конфигурации cell encodeHtml значение false:

 {
    xtype: 'templatecolumn',
    text: 'Department (Yrs)',
    tpl: '<div class="test">{department} {seniority}</div>',
    cell: {
        encodeHtml: false
    }
}