gpt4 book ai didi

javascript - 动态下拉菜单创建问题(使用 AngularJS、CSS、JSON)

转载 作者:行者123 更新时间:2023-11-28 02:56:52 25 4
gpt4 key购买 nike

应用 CSS 样式后仅显示最后一个菜单项。如果我尝试不使用 CSS(样式标签),则会显示完整菜单。

我应该改变什么?

请在下面找到代码片段。

<html>
<head>
<meta charset="ISO-8859-1">
<title>Angular Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script>
var helloAjaxApp = angular.module("myApp", []);

helloAjaxApp.controller("myCtrl3", function($scope) {

var data =[{"name":"home","submenus":[]},{"name":"enrollment","submenus":[{"name":"New Enrollment","submenus":[{"name":"Ekyc"},{"name":"Non_ekyc"}]},{"name":"Modify Old","submenus":[{"name":"Ekyc"},{"name":"Non_ekyc"}]}]},{"name":"User Module","submenus":[{"name":"Create","submenus":[]},{"name":"Modify","submenus":[]},{"name":"Delete","submenus":[]}]}];
$scope.menus =data;

});
</script>
<style>
* {
margin: 0;
padding: 0;
}

body {
font: 300 15px/1.5 "Helvetica Neue", helvetica, arial, sans-serif;
background: #333;
margin: 15px;
}


h1 {
font-size: 45px;
font-weight: 100;
letter-spacing: 15px;
text-align: center;
}

h1, #main_content, #dog_link {
padding: 15px;
}

p {
margin: 15px 0;
}

a {
color: #06c;
}

#main_nav ul {
background: white;
float: left;
-webkit-transition: .5s;
transition: .5s;
}

#main_nav li {
float: left;
position: relative;
width: 150px;
list-style: none;
-webkit-transition: .5s;
transition: .5s;
}

#main_nav > ul > li > a, h1 {
text-transform: uppercase;
}

#main_nav a {
display: block;
text-decoration: none;
padding: 5px 15px;
color: #000;
}

#main_nav ul ul {
position: absolute;
left: 0;
top: 100%;
visibility: hidden;
opacity: 0;
}

#main_nav ul ul ul {
left: 100%;
top: 0;
}

#main_nav li:hover, #main_nav li:hover li {
background: #ddd;
}

#main_nav li li:hover, #main_nav li li:hover li {
background: #bbb;
}

#main_nav li li li:hover {
background: #999;
}

#main_nav li:hover > ul {
visibility: visible;
opacity: 1;
}
</style>
</head>
<body >
<h1 align="center">Home Page</h1>
<div ng-app="myApp">
<div ng-controller="myCtrl3">
<nav id="main_nav">
<ul ng-repeat="menu in menus" >
<li><a href="#" >{{menu.name}}</a>
<ul ng-repeat="submenu1 in menu.submenus" >
<li><a href="#" >{{submenu1.name}}</a>
<ul ng-repeat="submenu2 in submenu1.submenus" >
<li><a href="#" >{{submenu2.name}}</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</div>
</body>
</html>

最佳答案

问题是您将 ng-repeat 指令添加到 ul 而不是将其放在 li 标签上。
我更新了您的答案,现在它似乎可以正常工作而无需任何 css 更改。因为你的逻辑没问题。看看我在 HTML 中的什么地方添加了 ng-repeat 指令。

<html>

<head>
<meta charset="ISO-8859-1">
<title>Angular Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script>
var helloAjaxApp = angular.module("myApp", []);

helloAjaxApp.controller("myCtrl3", function($scope) {

var data = [{
"name": "home",
"submenus": []
}, {
"name": "enrollment",
"submenus": [{
"name": "New Enrollment",
"submenus": [{
"name": "Ekyc"
}, {
"name": "Non_ekyc"
}]
}, {
"name": "Modify Old",
"submenus": [{
"name": "Ekyc"
}, {
"name": "Non_ekyc"
}]
}]
}, {
"name": "User Module",
"submenus": [{
"name": "Create",
"submenus": []
}, {
"name": "Modify",
"submenus": []
}, {
"name": "Delete",
"submenus": []
}]
}];
$scope.menus = data;

});
</script>
<style>
* {
margin: 0;
padding: 0;
}

body {
font: 300 15px/1.5 "Helvetica Neue", helvetica, arial, sans-serif;
background: #333;
margin: 15px;
}

h1 {
font-size: 45px;
font-weight: 100;
letter-spacing: 15px;
text-align: center;
}

h1,
#main_content,
#dog_link {
padding: 15px;
}

p {
margin: 15px 0;
}

a {
color: #06c;
}

#main_nav ul {
background: white;
float: left;
-webkit-transition: .5s;
transition: .5s;
}

#main_nav li {
float: left;
position: relative;
width: 150px;
list-style: none;
-webkit-transition: .5s;
transition: .5s;
}

#main_nav>ul>li>a,
h1 {
text-transform: uppercase;
}

#main_nav a {
display: block;
text-decoration: none;
padding: 5px 15px;
color: #000;
}

#main_nav ul ul {
position: absolute;
left: 0;
top: 100%;
visibility: hidden;
opacity: 0;
}

#main_nav ul ul ul {
left: 100%;
top: 0;
}

#main_nav li:hover,
#main_nav li:hover li {
background: #ddd;
}

#main_nav li li:hover,
#main_nav li li:hover li {
background: #bbb;
}

#main_nav li li li:hover {
background: #999;
}

#main_nav li:hover>ul {
visibility: visible;
opacity: 1;
}
</style>
</head>

<body>
<h1 align="center">Home Page</h1>
<div ng-app="myApp">
<div ng-controller="myCtrl3">
<nav id="main_nav">
<ul>
<li ng-repeat="menu in menus"><a href="#">{{menu.name}}</a>
<ul>
<li ng-repeat="submenu1 in menu.submenus"><a href="#">{{submenu1.name}}</a>
<ul>
<li ng-repeat="submenu2 in submenu1.submenus"><a href="#">{{submenu2.name}}</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</div>
</body>

</html>

关于javascript - 动态下拉菜单创建问题(使用 AngularJS、CSS、JSON),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46402880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com