#javascript #sencha-touch #sencha-touch-2
#javascript #сенча-касание #сенча-касание-2
Вопрос:
Я пытаюсь показать значок в сенсорной сетке sencha на основе динамических данных строки
вот мой код внутри столбца. но всякий раз, когда я запускаю приложение, я вижу <img>
тег в столбце вместо фактического изображения.
renderer:function(value, metaData, record){
//console.log(value);
if(value == "0"){
return "";
}else if(value == "2"){
return '<img src="resources/icons/status_paused.png"/>';
}else if(value == "3"){
return "<img src='resources/icons/status_paused.png'/>";
}else if(value == "4"){
return "<img src='resources/icons/status_completed.png'/>";
}
}
вот скриншот столбца
до сих пор я пробовал следующие вещи, но ничего не получалось
metaData.tdCls = "status-update" // where status-update is a class
metaData.css = "status-update"
Комментарии:
1. Не могли бы вы проверить, что на самом деле возвращается средством визуализации с помощью console.log() или путем проверки ячейки с помощью инструментов разработчика?
2. я проверил его с помощью инструмента разработчика, который показывает
<img src="resources/icons/status_paused.png"/>
только его, но черным шрифтом, как будто это просто основное текстовое значение, а не html-тег3. Затем вам нужно проверить, что это оборачивает,
<img src="resources/icons/status_paused.png"/>
возможно, это внутри другого свойства, или, может быть, у вас был какой-то плохо отформатированный html раньше?4. он находится только внутри строки div, и в нем нет плохого HTML-формата, вот содержимое
<div class="x-grid-cell x-grid-cell-align-left" id="ext-element-257" style="width: 110px;"><img src="/resources/icons/status_paused.png"></div>
5. что я заметил, так это то, что если я скопирую строку из инструмента разработчика в текстовый редактор, она заменит терку, а затем подпишет, а затем подпишет
amp;<
иamp;>
Ответ №1:
Как вы можете видеть из Ext.grid.column.Источники столбцов, значение, возвращаемое средством визуализации, помещается в nodeValue
элемент:
updateCell: function(cell, record, content) {
if (cell amp;amp; (record || content)) {
cell.firstChild.nodeValue = content || this.getCellContent(record);
}
}
Следовательно, он обрабатывается как текст. Это происходит потому, что вы используете столбец неправильного типа в определении столбца для вашей сетки. Ext.grid.column.Template
Вместо этого используйте an , который применяет ваши значения к an XTemplate
и помещает его в innerHtml
ячейку, и он должен работать.
Комментарии:
1. куда я должен поместить этот код и нужно ли мне все еще сохранять
rendere
функцию?2. Вы должны изменить
updateCell()
Ext.grid.column.Column
компонент, заменивnodeValue
наinnerHtml
, вы можете сделать это, непосредственно изменив исходный код Sencha Touch core, или вы можете расширитьExt.grid.Grid
, чтобы использовать расширенную версиюExt.grid.column.Column
. Да, нехорошо переопределять два файла для такого небольшого изменения 🙂3. Я посмотрел дальше в Ext.grid. Мы с Grid-кодом выяснили, что решение уже доступно в Sencha, без необходимости переопределения.