easyui accordion菜单最后一个菜单加载不出来,急!在线等~!

mili_eclipse 2015-07-26 07:00:30
第一次用easyui,左侧的导航菜单从后台返回json格式数据,用的springmvc @responsebody 把list转换为json数据。

jsp页面:
<!-- 树形菜单 -->

<div data-options="region:'west',split:true,title:'导航栏'" style="width:200px;">
<div id="navAccordion">
</div>
</div>


js代码

$(function() {
var location = (window.location + '').split('/');
var basePath = location[0] + '//' + location[2] + '/' + location[3];
var rootUrl = basePath + "/menu/init?parentId=0";
var childUrl = basePath + "/menu/queryMenu?parentId=";

jQuery("#navAccordion").accordion({ // 初始化accordion
fillSpace : true,
fit : true,
border : false,
animate : true
});
$.post(rootUrl, // 获取第一层目录
function(data) {
if (data == "0") {
window.location = "/login";
}
$.each(data, function(i, e) {// 循环创建手风琴的项
// console.info(Object);
var id = e.menuId;
$('#navAccordion').accordion('add', {
title : e.menuName,
content : "<ul id='tree" + id + "' ></ul>",
selected : true,
iconCls : Object.iconCls
});
// $.parser.parse();
$.post(childUrl + id, function(data) {// 循环创建树的项
console.info(data);
$("#tree" + id).tree(
{
data : data,
onBeforeExpand : function(node, param) {
$("#tree" + id).tree('options').url = childUrl
+ node.id;
},
onClick : function(node) {
var tabTitle = node.text;
var url = basePath + node.attributes;
var icon = node.iconCls;
if (node.state == 'closed') {
$(this).tree('expand', node.target);
} else if (node.state == 'open') {
$(this).tree('collapse', node.target);
} else {
addTab(tabTitle, url, icon);
}
}
});
console.info(1111111);
}, 'json');
});
}, "json");
});

function addTab(title, url, icon) {
if ($('#tabs').tabs('exists', title)) {
$('#tabs').tabs('select', title);
} else {
$('#tabs').tabs('add', {
title : title,
closable : true,
href : url
});
}
}


java后台代码:

/**根菜单初始化*/
@RequestMapping(value="/init")
@ResponseBody
public List<Menu> menuInit(HttpServletRequest request, HttpServletResponse response) {
String parentId = "0";
System.out.println(request.getParameter("parentId"));
Menu rootMenu = new Menu();
rootMenu.setParentId(parentId);
List<Menu> rootList = menuServiceImpl.selectByCondition(rootMenu);


System.out.println("rootlist size======"+rootList.size());
return rootList;
}

/**根据条件查询节点*/
@RequestMapping(value="/queryMenu")
@ResponseBody
public List<UIMenuModel> queryMenu(HttpServletRequest request, HttpServletResponse response) {
String menuId = request.getParameter("menuId");
String parentId = request.getParameter("parentId");
Menu menu = new Menu();
if(CommonUtil.stringIsNotNull(menuId)) {
menu.setMenuId(Long.parseLong(menuId));
}
if(CommonUtil.stringIsNotNull(parentId)) {
menu.setParentId(parentId);
}

List<Menu> list = menuServiceImpl.selectByCondition(menu);

List<UIMenuModel> menuList = new ArrayList<UIMenuModel>();

if(CommonUtil.listIsNotNull(list)) {
for(int i=0; i<list.size(); i++) {
menu = list.get(i);

UIMenuModel uiMenuMode = new UIMenuModel();

uiMenuMode.setId(menu.getMenuId());
uiMenuMode.setText(menu.getMenuName());
uiMenuMode.setIconCls(menu.getIcon());
uiMenuMode.setAttributes(menu.getUrl());

//0表示不可展开是终节点,1代表可以展开有子菜单
uiMenuMode.setState(menu.getCanExpand() == "0" ? "closed":"open");
menuList.add(uiMenuMode);
}
}

System.out.println("rootlist size======"+menuList.size());
return menuList;
}


页面初始化的时候如图:


默认展开最后一个菜单,但是里面的子菜单加载不出来,偶尔又能正确加载,但是打印出来的json数据是没有问题的,有数据,而且只有最后一个菜单会出这种情况,如果再添加一个菜单,个人任务菜单就可以正常加载,但是新添加的不能正确显示。
我现在是希望初始化的时候所有菜单都默认不展开,但是在js里面如果把 selected : true 改为 flase的话则子菜单全部不能加载,我用的 jquery1.8 和 easyui 1.3.2
求大神帮忙解决。
...全文
219 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kin_net 2015-08-07
  • 打赏
  • 举报
回复
初步测试是animate:选择 true 则最下侧的 accordion 模块 无法加载出来,选择false即可,但是想要动画效果咧~
Kin_net 2015-08-07
  • 打赏
  • 举报
回复
楼主有木有找到解决方案了?我也是这个问题,求解
mili_eclipse 2015-07-27
  • 打赏
  • 举报
回复
自己顶,有没有easyui高手啊??

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧