问题很简单就是一般我们单文件创建组件的时候的顺序是model》store》panel,我的问题是我想先创建panel再通过ajax为这个panel赋store,请问怎么弄呢?

解决方案 »

  1.   

    store晚于组件load或者你可以在组件内部new一个store用监听来控制,grid的话就没必要了
      

  2.   


    var store = Ext.create('Ext.data.TreeStore', {
        proxy: {
            type: 'ajax',
            url : '...'
        },
        autoLoad: true,
        root: {
                text: 'text',
                expanded: true
            }
    });var tree=Ext.create('Ext.tree.Panel', {
                store: store,
                rootVisible: true,
                bodyStyle:'border-width:0px'
            });
      

  3.   

    我主要是因为有串这样的数据{
        "json":[
            [
                {
                    "children":[
                        {
                            "children":[
                                {
                                    "leaf":true,
                                    "text":"aaaa"
                                },
                                {
                                    "leaf":true,
                                    "text":"bbbb"
                                }
                            ],
                            "leaf":false,
                            "text":"nnn"
                        },
                        {
                            "children":[
                                {
                                    "leaf":true,
                                    "text":"ccc"
                                },
                                {
                                    "leaf":true,
                                    "text":"ddd"
                                }
                            ],
                            "ids":15,
                            "leaf":false,
                            "text":"ooo"
                        },
                        {
                            "children":[
                                {
                                    "leaf":true,
                                    "text":"ggg"
                                },
                                {
                                    "leaf":true,
                                    "text":"hhh"
                                }
                            ],
                            "leaf":false,
                            "text":"kkk"
                        },
                        {
                            "children":[
                                {
                                    "leaf":true,
                                    "text":"lll"
                                }
                            ],
                            "leaf":false,
                            "text":"ppp"
                        },
                        {
                            "children":[
                                {
                                    "leaf":true,
                                    "text":"qqq"
                                },
                                {
                                    "leaf":true,
                                    "text":"cvbcvb"
                                }
                            ],
                            "leaf":false,
                            "text":"nbbnmfgh"
                        },
                        {
                            "children":[
                                {
                                    "leaf":true,
                                    "text":"ertert"
                                },
                                {
                                    "leaf":true,
                                    "text":"uiouio"
                                },
                                {
                                    "leaf":true,
                                    "text":"m,.m,."
                                }
                            ],
                            "leaf":false,
                            "text":"khjkj"
                        },
                        {
                            "children":[
                                {
                                    "leaf":true,
                                    "text":"bnmn"
                                },
                                {
                                    "leaf":true,
                                    "text":"rtytry"
                                }
                            ],
                            "leaf":false,
                            "text":"po[op[o"
                        },
                        {
                            "children":[
                                {
                                    "leaf":true,
                                    "text":"fghfgn"
                                }
                            ],
                            "leaf":false,
                            "text":"dfgfh"
                        }
                    ],
                    "leaf":false,
                    "text":"test"
                }
            ]
        ]
    }
    有大神帮帮我,怎么读这对数据吗!!!
      

  4.   


    xtype:'xcomboboxtree', 
    id : 'query.comCode',
    fieldLabel:'所属机构', 
    enableClearValue:true,//显示清除值的trigger 
    hiddenName:'comCode', 
    emptyText:'请选择...',
    forceSelection : true,
    editable : false,
    width:100,//该域的长度 
    listWidth:180,//下拉框的长度 
    listHeight:200,//下拉框的高度 
    tree:new Ext.tree.TreePanel({ 
    id : 'mytree',
    autoScroll:true,
    animate:true,
    enableDD:true,
    rootVisible : false,
    root:new Ext.tree.AsyncTreeNode({ 
    id: '0', 
    text:'<--请选择机构-->' ,
    loader:new Ext.tree.TreeLoader({  dataUrl:'queryAddListOrganizationAction.action',
    baseParams : {
    'blBaseInfo.isAdSeries' : '1',
    'blBaseInfo.flag' : '1',
            'blBaseInfo.dataPower' : "<%=datapower%>"
       },
    preloadChildren:true 
    })
    })
    /*listeners : {
    'beforeload' : function(node){
    if(node.id == "0"){/定义子节点的Loader
    }else{ //定义子节点的Loader
                       }
                    }
    }*/
    }), 
    listeners:{  'treenodeselect':function(combotree,node){  combotree.setValue(node.text);  combotree.setHiddenValue(node.id); 

    }                             
                                }
    这个是一个机构树的panel,调用了扩展,不过基本一样,监听里面beforeload可以帮助先加载数据,当然你也可以用其他事件先加载组件
      

  5.   

    大哥感谢你的回复但条用了beforeload事件之后怎么加载数据呢?这方面给点代码啊,这问题我已经发三帖,追加到140分了,所有分都给你,我只想要可行性的代码,是事件上做手脚我有试过,事件上用Ajax对吗?但这样有弊端,这也是我想问的另外一个大问题,就是我写一个方法,怎么让其返回值可以到处都能用,而不局限与只能在本类才能用呢,因为我试着讲事件中的方法独立出来,独立出来后的方法的返回值却是空的,还有一个问题是事件之间怎么相互传值,这问题和上面个问题接近,就是我定义两个事件,一个load,一个add,那我还定义一个var a,怎么让这个a可以在两个事件中穿梭呢
      

  6.   

    我不太了解你json是直接传到了前台还是通过其他方法,动态加载树的话,EXT无非是通过treeloader这些,至于ajax,ext本身就属于异步框架,所以使用的时候用ajax没有问题,你可以尝试将你后台拼装的树传到某个jsp,比如说struts2在配置文件中可以<result name="success" type="json" /><result name="comTree">/jsp/baseinfo/comTree.jsp</result>,JSP写成
    <%@ page language="java" contentType="text/html; charset=utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <s:property value="delCode" escape="false" />
    如果这样还是不能满足,建议你先讲自己的json写成静态的json或者xml文件,用你的panel去加载下,看是否可以使用,因为json格式很重要
      

  7.   


    不好意思,现在才回复您我的json数据是后台直接返回到页面的,返回到前台是有2-3个类是上面的json数据的,因为大家看到很晕,所以我截取了其中一个,还有我是不想用jsp,是不是我要读取这样的json对象数组就只能用ajax放在事件中来获取呢?还有其他问题如下二、三文件js,分别ABC三类,C中写一方法,让AB调用并输出C中返回的值。
    三、事件之间值调用,如在D。js中写2事件分别为load,render,

    问题二详解:就是首先有三个js,分别是A、B、C三个js,我在C.JS中写个方法,有返回值的,之后在A、B中分别调用,但我在A、B中调用这C中的方法获取到的返回值却是空的,请问怎么弄才能得到我这个想法呢
    问题三详解:假如我有个类A。js,给A写两个事件分别是render和load(哪个先调用我不知道,假设是load),我在load中获取一定的数据,假设是var a =1(var a的定义我会定义在类的开头),调用完load后类A自然调用render,那我在render中获取这个a,我获取到这个a的值是undefined的,我想问的问题就类是则这样,这个a怎么可以在事件中穿梭使用问题二的代码如下:
    首先是JS的引用,我用的是extjs4,看不太明白我改
      <script type="text/javascript" src="app/util/Ajax.js"></script>
            <script type="text/javascript" src="ext/bootstrap.js"></script>
            <script type="text/javascript" src="app.js"></script>tree的代码:
    Ext.define('JSONTree', {
                extend : 'Ext.tree.Panel',
                listeners : {
                    'beforeadd' : function(container, component) {
                        console.log(loadSession());                }
                }
            });C中的ajax:
        var data = [];
    function loadSession() {
        Ext.Ajax.request({
                    url : 'test.json',
                    method : 'POST',
                    timeout : 3000,
                    success : function(response) {
                        var rps = Ext.decode(response.responseText);
                        data = rps.json;
                    }
                })
        return data;
    }问题三var panel = Ext.create('Ext.tree.Panel',{ width:100, height:100, render:Ext.getBody(), listeners : { aaa:function() { alert('vcxcv'); var a='123'; console.log('aaa'); return a; }, add : function() { alert('add'); alert('事件'+aaa()); } }, test:function() {alert('vcxcv'); var a='123'; console.log('test'); return a; }, bbb : function() { alert('bbb'); console.log('方法'+test()); } }); panel.bbb();