我是sencha的新手。我正在使用treestore和nestedList开发一个应用程序。 我无法加载从coldfusion组件返回的数据。它显示为null。
这是我的Viewport.js:
Ext.define('Myapp.view.Viewport', {
extend: 'Ext.tab.Panel',
xtype:'newviewport',
config: {
fullscreen: true,
tabBarPosition: 'top',
html: 'hiiiiiiiiiii',
cls:'test',
items: [
{
title: 'Sections',
iconCls: 'home',
xtype: 'sectionslist'
}
]
}
});
我的商店:samplestore.js
Ext.define('Myapp.store.samplestore', {
extend: 'Ext.data.TreeStore',
config: {
autoLoad: true,
model: 'Myapp.model.sampleModel',
proxy: {
type: 'ajax',
url: '/sample/sample1.cfc?method=getSections',
reader: {
type: 'json',
rootProperty:'DATA'
}
}
}
});
我的模型:sampleModel.js
Ext.define("Myapp.model.sampleModel", {
extend: "Ext.data.Model",
config: {
fields: [
{name: 'LoginID', type: 'string'},
{name: 'FIRSTNAME', type: 'string'}
]
}
});
我的sample1.cfc:
<cfcomponent name="sample" output="false">
<cffunction name="getSections" output="no" returnformat="json" access="remote">
<cfquery name="qryGetDetails" datasource="#request.dsn#">
SELECT TOP 5
LoginID, FIRSTNAME
FROM
tblUser
</cfquery>
<cfreturn qryGetDetails>
</cffunction>
</cfcomponent>
我的Sectionslist.js
Ext.define('Myapp.view.Sectionslist', {
extend: 'Ext.dataview.NestedList',
xtype: 'sectionslist',
config: {
store: 'samplestore'
itemTpl: [
'{FIRSTNAME}<br/>'
].join(''),
onItemDisclosure: function(record, btn, index) {
console.log("worked");
}
},
//getItemTextTpl: function(node) {
//console.log(node);
// return node.data.FIRSTNAME+ ':<strong></strong>';
// }
});
最后我的json数据:
{"COLUMNS":["LOGINID","FIRSTNAME"],"DATA":[["bt","Jn"],["jr","Jy"],["b20","Best"],["jman","Jeff"],["fenad","Fn"]]}
请帮助找出我的问题,我无法触发我出错的地方,我得到空值,因为显示数据是错误的:
itemTpl:[
'{} FIRSTNAME
'
] .join(''),
而不是名字,我应该在这里显示什么?我尝试了很多方法,但没有用,请帮忙.....
答案 0 :(得分:0)
你的JSON正在返回像
这样的数组集合["bhpAgent", "Jan"],
但是字段定义要求响应是
之类的对象的集合{"LoginID": "bhpAgent", "FIRSTNAME": "Jan"}.
不确定最佳解决方案。 ColdFusion可以生成JSON对象吗?
如果没有,可能是子类Ext.data.reader.JSON并覆盖getResponseData()。
也可能值得检查TreeStore文档,因为该视图对树结构数据有进一步的要求。