ExtJS 4を使用して、次の方法で2つのモデルを定義しました。
Ext.define('GlsAmCrm.model.grpModel',{
extend: 'Ext.data.Model',
idProperty: 'recordid',
fields:[
{name: 'text', type: 'string'},
{name: 'id', type: 'string'},
{name: 'cls', type: 'string'},
{name: 'leaf', type: 'bool'}
],
proxy: {
type: 'ajax',
api:{
create: '/app/data/grpdata.php/create',
read:'/app/data/grpdata.php/read',
update:'/app/data/grpdata.php/update',
destroy:'/app/data/grpdata.php/destroy'
},
reader: {
type: 'json',
root: 'condata',
successProperty: 'success'
}
},
hasMany: {model: 'GlsAmCrm.model.conModel', name: 'condata', associationKey:'condata'}
});
Ext.define('GlsAmCrm.model.conModel',{
extend: 'Ext.data.Model',
idProperty: 'recordid',
fields:[
{name: 'text', type: 'string'},
{name: 'id', type: 'string'},
{name: 'cls', type: 'string'},
{name: 'leaf', type: 'bool'},
{name: 'loaded', type: 'bool'},
{name: 'parentId', type: 'string'},
{name: 'category', type: 'string'}
],
belongsTo: 'GlsAmCrm.model.grpModel'
});
返されるJSON応答を使用して、ネストされたデータをツリーパネルに正常にロードしました。
{
"condata": [
{
"text": "<span class=\"tree-group\">Arrowleaf Technologies</span>",
"id": "d61c7bb7-dd88-11e1-a355-0013d3f996ae",
"cls": "tree-root",
"leaf": false,
"condata": [
{
"text": "<span class=\"tree-contact\">Dos Santos, Robert A</span>",
"id": "1df08c59-d718-11e1-aa72-0013d3f996ae",
"cls": "tree-root",
"parentId": "d61c7bb7-dd88-11e1-a355-0013d3f996ae",
"leaf": true,
"loaded": true,
"category": "A"
},
{
"text": "<span class=\"tree-contact\">Interrante, Sheila D</span>",
"id": "0d212d01-d718-11e1-aa72-0013d3f996ae",
"cls": "tree-root",
"parentId": "d61c7bb7-dd88-11e1-a355-0013d3f996ae",
"leaf": true,
"loaded": true,
"category": "B"
},
{
"text": "<span class=\"tree-contact\">Sanford, Martha J</span>",
"id": "14e3e4cb-d718-11e1-aa72-0013d3f996ae",
"cls": "tree-root",
"parentId": "d61c7bb7-dd88-11e1-a355-0013d3f996ae",
"leaf": true,
"loaded": true,
"category": "C"
},
{
"text": "<span class=\"tree-contact\">Simmons, Shawn P</span>",
"id": "06354f92-d718-11e1-aa72-0013d3f996ae",
"cls": "tree-root",
"parentId": "d61c7bb7-dd88-11e1-a355-0013d3f996ae",
"leaf": true,
"loaded": true,
"category": "D"
}
]
},
{
"text": "<span class=\"tree-group\">Consolidated Physician Services</span>",
"id": "bba64918-dd87-11e1-a355-0013d3f996ae",
"cls": "tree-root",
"leaf": false
},
{
"text": "<span class=\"tree-group\">Pinellas County Schools</span>",
"id": "ed409413-e947-11e1-a7ed-0016177c526f",
"cls": "tree-root",
"leaf": false
}
]
}
最初のエントリを展開すると、すべての子の葉が表示されます。子リーフの1つ(たとえば、Dos Santos、Robert)をクリックすると、その子レコードの「カテゴリ」フィールドにアクセスしたいと思います。
...
listeners: {
newselection: function(view,rec){
console.log ("THIS IS WHERE I NEED HELP");
}
}
...
ここで子レコードを取得する方法についての洞察をいただければ幸いです。