(求助)extjs4.0 mvc模式中,在controller中获取view层的元素对象
求各位extjs大仙帮忙。。在做动态添加tabPanel时,遇到了一小问题,大家帮忙看下呗:
在view层,有这样一段代码:
Ext.define("MyDesktop.view.messageBoxView",{
extend:"Ext.panel.Panel",
alias:'widget.mainlayout',layout:'border',
items:[{
title:'信息',
region:'west',
xtype:'panel', collapsible:true,//可以被折叠
id:'west-tree',
layout:"fit",
items:[{
xtype:'treepanel',
id:'message-tree', animate:false,
store:Ext.create("Ext.data.TreeStore",{
root:{
text:"消息",
id:"rootMsg",
expanded: true,
padding:5,
children: [
{
text:"写信息",id:"writeMsg",icon:"writeMessage.png",leaf:true })
}]
代码我给精简了。大概意思是,如何在controller中,获取tree对象,给tree节点添加事件,主要是想实现。当点击那个写信息的内容时,能动态添加一个tabpanel。
在controller中我是这样写的。。
Ext.define("MyDesktop.controller.messageBoxController",{
extend:"Ext.app.Controller",
init:function(){
this.control({
"mainlayout treepanel[id=writeMsg]":{ render:function(tree){
alert(tree);
}
}
});
},
views:['messageBoxView'],
stores:['messageBoxStore'],
models:['messageBoxModel']
})
我是想通过我定义的一个view对象。通过别名下的xtype属性,然后再通过id属性去找该对象。可不对。
目前只是写了一个简单的测试语句。可事件不起作用。
ps:求各位大神帮忙了。。。。先行谢过。。。。
[解决办法]
拿节点的话可以通过TreePanel拿TreeStore,然后在拿TreeStore的子节点:
var treePanel = Ext.getCmp('message-tree');
var treeStore = treePanel.getStore();
var childrenNode = treeStore.getNodeById('writeMsg');
[解决办法]
你这个给树节点添加单机事件啊!可以这样实现:
'treeView treepanel':{
itemclick:function(view,record,item,index,e){
switch(record.data.id){
case 'writeMsg':
alert('writeMsg');
break;
case 'readMsg':
alert('readMsg');
break;
}
}
}