【问题标题】:Creating a dynamic Navigation Menu from a very dynamic(typical JSON structure) using Javascript or Jquery or AngularJS?使用 Javascript 或 Jquery 或 AngularJS 从非常动态(典型的 JSON 结构)创建动态导航菜单?
【发布时间】:2017-06-10 15:07:19
【问题描述】:

我必须创建一个基于来自服务器的动态 JSON 的菜单,就像这样。

    [  
   {  
      "something":[  
         {  
            "something":[  
               "something",
               "something"
            ]
         },
         {  
            "something":[  
               "something",
               "something",
               {  
                  "something":[  
                     "something",
                     "something"
                  ]
               }
            ]
         },
         "something"
      ]
   },



   {  
      "something":[  
         "something",
         "something",
         "something"
      ]
   },


   {  
      "something":[  
         {  
            "something":[  
               {  
                  "something":[  
                     "something",
                     {  
                        "something":[  
                           "something",
                           "something"
                        ]
                     },
                     "something"
                  ]
               },
               "something",
               "something"
            ]
         },
         "something",
         "something"
      ]
   },{
     "something":[  
         "something"
      ]
   }
]
enter code here

所以我尝试解析它,然后我发现这个结构本质上也是动态的,所以我的循环不起作用。

我正在寻找一些用于开发 sn-p 的输入,该 sn-p 基于来自服务器的 JSON(也是动态的)动态创建菜单。

【问题讨论】:

  • 数据结构要统一。你混合了数组和对象。首先解决这个问题
  • 是的,我同意,但这是我被分配为挑战的一些任务。这是我无论如何都需要使用的示例 json。
  • 至少发布一个有效的对象。

标签: javascript jquery angularjs json menu


【解决方案1】:

使用递归函数,如

function parse(object, id)
{
    if(Array.isArray(object))  //array
    {
        object.forEach(function(a){
            parse(a,id);
        });
    }
    else if(typeof object == 'object')  //JSON object
    {
        var index = 0;
        for (var k in object) {
            $(".list" + id).append("<div class='list" + id.toString() + index.toString() + "'>" + k + "</div>");
            index++;
            parse(object[k],id.toString() + index.toString());
        }
    }
    else  //string
    {
        $(".list" + id).append("<div class='list" + id.toString() + "0'>" + object + "</div>");
    }
}
parse(obj,"0");

obj 是调用此函数的主要对象。它递归地检查对象类型并将其嵌入到具有唯一 ID 的 div 中。

由于您的对象格式不正确,我尚未对其进行测试。掌握基本知识,例如键应该是唯一的等。这应该会给您提示如何继续

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2012-01-13
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    相关资源
    最近更新 更多