日期:2014-05-16  浏览次数:20342 次

修改extjs4.1的example里的tree/check-tree例子,希望可以读取指定json节点下的数据,一直不成功,求教
本帖最后由 yufulou 于 2013-01-29 14:15:40 编辑
原例子:
js:
var store = Ext.create('Ext.data.TreeStore', {
        proxy: {
            type: 'ajax',
            url: 'check-nodes.json'
        },
。。。。以下省略
json:
[{
    "text": "To Do", 
    "cls": "folder",
    "expanded": true,
    "children": [{
        "text": "Go jogging",
        "leaf": true,
        "checked": true
    },{
。。。。以下省略
改为
js:
var store = Ext.create('Ext.data.TreeStore', {
        proxy: {
            type: 'ajax',
            url: 'check-nodes.json',
            reader:{
                 type:'json',
                 root:'data.record'
            }
        },
json:
{data:{record:[{
    "text": "To Do", 
    "cls": "folder",
    "expanded": true,
    "children": [{
        "text": "Go jogging",
        "leaf": true,
        "checked": true
    },{
。。。。以下省略

上面的代码将会报错。
之后,我把proxy和reader的创建过程都放到外面手动创建了,都创建成功了,然后就是在创建treestore的时候,把里面的proxy属性指向我创建的proxy对象,就提示treestore创建失败了,希望找一个解决办法,因为我希望返回值能符合我规定的数据格式,以便统一错误信息
------解决方案--------------------
最终发现,其实,所设置的root其实就是相当于树json的children所在的位置,可以设置root为data,但是,要把所有children都改成data,所以,在这里设置多层节点(root.record)是不可以的,而reader中的record属性代表在root下面,存在多行数据时,要找的节点名,在xml-tree里有相应例子,比如<root><record></record><record></record></root>,暂时认为record属性在这里不适用于json节点,结贴~~