以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  easyui模板菜单求教  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133889)

--  作者:淡月斜阳
--  发布时间:2019/4/23 9:40:00
--  easyui模板菜单求教
原菜单menu.js中代码如下:
以下内容为程序代码:

1 var SystemMenu=[{"title":"系统管理","icon":"","isCurrent":true,"menu":[{"title":"管理1","icon":"","isCurrent":true,"children":[{"title":"首页","href":"workbench.html","isCurrent":true}]}]}];
我用动态生态:
以下内容为程序代码:

1 var jsonObj;
2 var SystemMenu=[];
3 $.get("getmenu.js", function(Data){
4 jsonObj =$.parseJSON(Data);
5 var josnstr= JSON.stringify(jsonObj);
6 console.log(josnstr);
7 for(var i =0 ;i < jsonObj.length;i++){
8     SystemMenu[i] = jsonObj[i];
9 }
10 console.log(typeof(SystemMenu));
11
12 });
13

调试结果:
以下内容为程序代码:

1 [{"title":"系统管理","icon":"","isCurrent":true,"menu":[{"title":"管理1","icon":"","isCurrent":true,"children":[{"title":"首页","href":"workbench.html","isCurrent":true}]}]}]
2 menu.js:10 object

生成的josn格式正确,直接把生成的格式放改成 var systemmenu可以执行。
生成菜单的代码:
以下内容为程序代码:

1     _createTopMenu: function(){
2         var menuStr = \'\',
3             currentIndex = 0;
4         for(var i = 0, len = SystemMenu.length; i < len; i++) {
5             menuStr += \'<li class="pf-nav-item project" data-sort="\'+ i +\'" data-menu="system_menu_" + i>\'+
6 \'<a href="javascript:;">\'+
7 \'<span class="iconfont">\'+ SystemMenu[i].icon +\'</span>\'+
8 \'<span class="pf-nav-title">\'+ SystemMenu[i].title +\'</span>\'+
9 \'</a>\'+
10 \'</li>\';
11 // 渲染当前
12 if (SystemMenu[i].isCurrent){
13     currentIndex = i;
14     this._createSiderMenu(SystemMenu[i], i);
15 }
16         }
17
18         $(\'.pf-nav\').html(menuStr);
19         $(\'.pf-nav-item\').eq(currentIndex).addClass(\'current\');
20     },

正常和我写的错误的状态如图:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20190423093648.png
图片点击可在新窗口打开查看
帮忙看看,怎么回事。
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20190423093609.png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2019/4/23 11:01:00
--  

 

返回的 Data 内容是什么?为什么不直接赋值给 SystemMenu ?

 

 


--  作者:淡月斜阳
--  发布时间:2019/4/23 11:08:00
--  
Select Case e.Path
    Case "TableData"
        e.AsyncExecute=True
        Functions.AsyncExecute("GetData",e)
    Case "getmenu"
        MessageBox.Show("c")
    Case "getmenu.js"
        Dim jb As new JArray
        jb.Add(new JObject)
        Dim jo As new JObject
        Dim ja As new JArray
        Dim ja1 As new JArray
        jb(0)("title")="系统管理"
        jb(0)("icon")=""
        jb(0)("isCurrent")=True
        jb(0)("menu")=ja
        ja.Add(new JObject)
        ja(0)("title")="管理1"
        ja(0)("icon")=""
        ja(0)("isCurrent")=True
        ja(0)("children")=ja1
        ja1.Add(new JObject)
        ja1(0)("title")="首页"
        ja1(0)("href")="workbench.html"
        ja1(0)("isCurrent")=True
        e.WriteString(CompressJson(jb))
End Select
生成的josn是这个:
[{"title":"系统管理","icon":"","isCurrent":true,"menu":[{"title":"管理1","icon":"","isCurrent":true,"children":[{"title":"首页","href":"workbench.html","isCurrent":true}]}]}];
[此贴子已经被作者于2019/4/23 11:09:22编辑过]

--  作者:有点甜
--  发布时间:2019/4/23 11:27:00
--  

直接赋值过去,如

 

SystemMenu = $.parseJSON(Data);

 


--  作者:淡月斜阳
--  发布时间:2019/4/23 11:35:00
--  
不行啊,试过了
以下内容为程序代码:

1 var SystemMenu=[];
2 $.get("getmenu.js", function(Data){
3 SystemMenu=$.parseJSON(Data);
4 console.log(typeof(SystemMenu));
5 });


--  作者:有点甜
--  发布时间:2019/4/23 11:45:00
--  

 

具体实例发上来测试

 

 


--  作者:淡月斜阳
--  发布时间:2019/4/23 12:06:00
--  
这是例子
[此贴子已经被作者于2019/4/23 12:06:41编辑过]

--  作者:有点甜
--  发布时间:2019/4/23 12:09:00
--  
请正确上传实例。
--  作者:淡月斜阳
--  发布时间:2019/4/23 12:15:00
--  
上传不上啊,怎么回事
链接:https://pan.baidu.com/s/1sd4614CRObAqCjbUwEr5og 
提取码:dgp7 
放到百度网盘了
[此贴子已经被作者于2019/4/23 12:16:34编辑过]

--  作者:有点甜
--  发布时间:2019/4/23 12:53:00
--  

先执行了 main.js 的代码,才会回来执行你 $.get的代码的,也就是先生成了菜单,你才返回json数据。

 

改成,如

 

var  jsonObj;
var  SystemMenu=[];
$.get("getmenu1.js", function(Data){
alert(Data);
SystemMenu=$.parseJSON(Data);

\'拷贝你main.js的代码放在这里执行

});