具有直接代理的ExtJs中的TreePanel表现得很奇怪

时间:2013-12-23 15:13:05

标签: extjs treepanel

我正在使用Sencha Architect 3.0.1。 我正在尝试使用Model,TreeStore和TreePanel。

模特:

Ext.define('User.model.ModelClientList', {
    extend: 'Ext.data.Model',
    fields: [{ name: 'id' }, { name: 'name' }, { name: 'status' } ],
    proxy: {
        type: 'direct',
        directFn: 'UserClient.listClient',
        reader: { type: 'json',root: 'data'}
    }
});

TreeStore:

Ext.define('User.store.StoreClientList', {
    extend: 'Ext.data.TreeStore',
    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            model: 'User.model.ModelClientList',
            storeId: 'StoreClientList'
        }, cfg)]);
    }
});

TreePanel:

{
    xtype: 'treepanel',
    height: 250,
    itemId: 'MainClient',
    width: 400,
    title: 'Clients',
    hideHeaders: false,
    store: 'StoreClientList',
    rootVisible: false,
    viewConfig: {loadMask: true},
    columns: [
        {xtype: 'treecolumn',dataIndex: 'name',text: '..'},
        {xtype: 'gridcolumn', dataIndex: 'status', text: '..'}
    ]
}

对UserClient.listClient的json请求返回:

{
"data":[
    {"id":1,"name":"Pluto","status":3,"children":[
        {"id":35,"name":"Mela","status":2,"leaf":true},
        {"id":36,"name":"Pera","status":1,"leaf":true},
        {"id":37,"name":"Arancia","status":1,"leaf":true}]},
    {"id":2,"name":"Pippo","status":1,"leaf":true},
    {"id":3,"name":"Paperino","status":2,"leaf":true}],
"success":true
}

现在,有人可以解释一下:

(1)为什么当我点击第一个节点的[+]图标时,应用程序会执行另一个ajax请求,而不是扩展先前请求中已经获得的内容

(2)鉴于这一初步观点:

Initial tree view

为什么当我点击[+]时,它会像这样开始疯狂:

App went crazy

1 个答案:

答案 0 :(得分:0)

这显然是Sencha Architect的一个问题。

我在一个新项目中从头开始重写相同的架构,现在它按预期工作。

另外,我注意到架构师出了问题,因为简单的操作使得它显示出难以理解和不可判断的错误(例如“无法设置属性'DirectCfg'为null”)。

不幸的是,我不能说Sencha Architect对于大型复杂的项目是成熟的..甚至可能不适用于小型项目。太可惜了