gdfloyd
gdfloyd
2009-08-11 17:52
浏览 229

需要一个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/
还是谢了
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • iteye_10013
    iteye_10013 2009-08-11 21:07
    已采纳

    测试代码如下

    第一次点击的时候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]

    点赞 评论
  • iteye_10013
    iteye_10013 2009-08-11 17:59

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

    点赞 评论
  • iteye_10013
    iteye_10013 2009-08-11 18:07

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

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

    点赞 评论
  • iteye_10013
    iteye_10013 2009-08-11 21:08

    m.add(menuArr[i])

    这个是3.0的写法.

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

    点赞 评论
  • wenli1314
    wenli1314 2009-08-12 10:08

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

    点赞 评论
  • iteye_10013
    iteye_10013 2009-08-13 17:13

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

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

    点赞 评论

相关推荐