Кажется, что это должно быть просто. Вот мой магазин данных декларации:Как сделать Ext.Panel показать DataView с помощью JsonStore и XTemplate?
var dataStore = new Ext.data.JsonStore({
autoLoad : true,
url : '#mvclink(' json.getCostReportsJsonData ')#&layout_type=txt',
root : 'data',
id : 'dataStoreId',
fields : ['project', 'cost']
});
URL-адрес фактически генерируется ColdFusion, который вызывает запрос и преобразует его в формат JSON. Я думаю, что все работает правильно здесь, так как объект Json возвращается как:
{"recordcount":1,"columnlist":"project,cost","data":[{"project":"ABC","cost":2250}]}
У меня есть фиктивные данные там на данный момент, так что только одна строка возвращается.
Далее я объявить Ext.Panel с DataView в нем:
var myPanel = new Ext.Panel({
layout : 'fit',
id : 'myPanel',
title : "My Panel",
monitorResize : true,
deferredRender : false,
items : new Ext.DataView({
store : dataStore,
tpl : costReportTemplate
}),
renderTo : Ext.getBody()
});
Шаблон ссылка является XTemplate:
var costReportTemplate = new Ext.XTemplate(
'<tpl for=".">',
'<p><b>{project}</b>: {cost:this.format}</p>',
'</tpl>', {
format : function (v) {
var s = Ext.util.Format.usMoney(v);
return s.substring(0, s.indexOf('.'));
}
});
После рендеринга страницы, я могу увидеть панель, но он полностью пуст, и я не получаю ошибок в Firebug. Что я делаю не так?
Я понял это! Я не использовал значение фиктивной стоимости с десятичной точкой, поэтому функция формата работала неправильно. Однако у меня не было никаких ошибок. Я изменил его, чтобы проверить (s.indexOf ('.')! = -1), и теперь все в порядке. – drearyworlds