在Ext里实例化一个菜单:
var menu = new Ext.menu.Menu({ items:[{ text:'菜单项' }] });
像上面的写法就写死在JS里面了,需要根据URL动态读取生成菜单~~~~
请给出Ext扩展组件代码哦
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'
});
测试代码如下
第一次点击的时候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]
什么意思? 我的代码你试过么