如何在Extjs NodeInterface上更改parentId属性

时间:2012-06-04 03:12:31

标签: javascript rest extjs extjs4

我在 Extjs 4.1 上创建了带休息服务的简单树 如何从Ext.data.NodeInterface更改parentId属性名称?

这是我的模特:

Ext.define('Buildlife.model.Folder', { 
    extend:'Ext.data.Model', idProperty:'id',  
    fields:[
        {name:'id', type:'auto',defaultValue:null},
        {name:'name', type:'auto'},  
        {name:'files',type:'auto',convert:function(val,rec){
            for(var i in val){
                var each = val[i];
                Ext.apply(each,{
                    name: each.fileName,
                    leaf:true,
                    iconCls:'x-event-icon'
                });
                rec.appendChild(rec.createNode(each));
            } 
            return val;
        },defaultValue:null}
    ], 
    proxy:{
        type:'rest', 
        url:GlobalConf.contextPath+'/rest/folder', 
        reader:{type:'json', root:'children', successProperty:'success'}, 
        writer:{type:'json', root:'children', writeAllFields:false}, 
        listeners:{exception:GlobalConf.storeExceptionHandler}
    }
});

当我添加子节点时,它将父节点作为parentId发送。

{
    "children": {
        "name": "test",
        "parentId": "4fc742f344aeac0cc87e6afa",
        "leaf ": false
        //etc.
    }
}

是否可以将其更改为customProperty,例如:

{
    "children": {
        "name": "test",
        "customProperty": "4fc742f344aeac0cc87e6afa",
        "leaf ": false
        //etc.
    }
}

1 个答案:

答案 0 :(得分:2)

看起来不像。 ParentId是NodeInterface类的一部分,每个树节点都是子类。您必须覆盖此处列出的'decorate'静态方法: http://docs.sencha.com/ext-js/4-1/source/NodeInterface.html#Ext-data-NodeInterface 还有一个updateInfo方法,在尝试设置parentId属性的节点移动后调用 - 因此也必须更改。