这似乎应该很简单。这是我的数据存储声明:
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}]}
我现在有虚拟数据,所以只返回一行。
接下来,我声明一个带有DataView的Ext.Panel:
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中没有出错。我做错了什么?
答案 0 :(得分:0)
我明白了!我没有使用带小数点的虚拟成本值,因此格式化功能无法正常工作。不过,我没有收到任何错误。我改变它来检查if (s.indexOf('.') != -1)
,现在一切都很好。