需要一个Ext组件,能根据请求后台的URL动态生成的菜单

在Ext里实例化一个菜单:

 

var menu = new Ext.menu.Menu({
    items:[{
        text:'菜单项'
    }]
});

 

 像上面的写法就写死在JS里面了,需要根据URL动态读取生成菜单~~~~

 请给出Ext扩展组件代码哦


问题补充:
监听什么事件,怎个写法?
问题补充:
我的意思是菜单的子项动态加载,不是菜单的子项的子菜单动态加载
即菜单new的时候,传个url就能生成了
问题补充:
ajax异步加载第一次是没有
问题补充:

var menu = new Ext.menu.Menu({

listeners: {

'beforerender': function (m) {

Ext.Ajax.request({

url: 'http://localhost:8080/autotollhrms/servlet/MenuServlet',

success: function (response, opts) {

//var menuArr = Ext.decode(response.responseText).data;

for (var i = 0; i < 10; i++) {

m.add({

text: 'Aero Glass',

checked: true,

group: 'theme'

});

}

}

});

}

}
});

var panel = new Ext.Panel({
html:'ttttttttttt',
bbar:[{text:'test',menu:menu}],
renderTo:'test'
});



由于ajax异步加载,
第一次加载如果菜单子项比较多,把10改大一点,就不显示了~~~
已经有方法解决了:
http://www.lubber.de/extjs/storemenu/
还是谢了

测试代码如下

第一次点击的时候menu的位置不对,你可以自己修改下
[code="javascript"]
var menu = new Ext.menu.Menu({
listeners: {
'beforerender': function (m) {
Ext.Ajax.request({
url: 'json.txt',
success: function (response, opts) {
var menuArr = Ext.decode(response.responseText).data;
for (var i = 0; i < menuArr.length; i++) {
m.add(menuArr[i])
//console.log(menuArr[i])
}
},
params: {
tz: 'tz'
}
});
}
}
})[/code]

测试的json:

[code="javascript"]
{
data:[
'Choose a Theme',
{
text: 'Aero Glass',
checked: true,
group: 'theme'
}, {
text: 'Vista Black',
checked: false,
group: 'theme'
}, {
text: 'Gray Theme',
checked: false,
group: 'theme'
}
]
}[/code]

监听menu的事件,发Ext.Ajax请求,回填

mouseover : ( Ext.menu.Menu this, Ext.EventObject e, Ext.menu.Item menuItem )

自己设置个标志位,表示该菜单是否有子菜单,是否已经加载子菜单,子菜单请求的url等.

m.add(menuArr[i])

这个是3.0的写法.

2.2的话你看下api吧,可能需要Adaptor包装下再用add/addMenuItem之类的函数.

用JSON格式数据吧,应该很容易解决。

[quote]ajax异步加载第一次是没有[/quote]

什么意思? 我的代码你试过么