Javascript Angular JS下拉列表,使用ng click和ng show显示动态内容?
这是我的HTML:我试图用angular js构建菜单和菜单中显示的内容,其中包含一个名为“竞赛”的对象Javascript Angular JS下拉列表,使用ng click和ng show显示动态内容?,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,这是我的HTML:我试图用angular js构建菜单和菜单中显示的内容,其中包含一个名为“竞赛”的对象 <!DOCTYPE html> <html ng-app="app"> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <script src="https://
<!DOCTYPE html>
<html ng-app="app">
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=yes" />
<title>Title Town!</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" integrity="sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==" crossorigin="anonymous">
</head>
<body>
<div ng-controller="ContestController as contest">
<h2>{{contest.greeting}}</h2>
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Select a team!
<span class="caret"></span></button>
<ul class="dropdown-menu">
<li ng-repeat="contest in contest.contest" ng-class="{{contest.active}}"><a href ng-click="tab = tab=={{contest.id}} ? a : {{contest.id}}">{{contest.name}}</a></li>
</ul>
</div>
<p ng-repeat="contest in contest.contest" ng-show="{{contest.show}}">{{contest.name}} Contest! </p>
</div>
<br/><br/><br/><br/><br/><p>There should be content displayed above me when a team is clicked. </p>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="script.js"></script>
</body>
</html>
我的正如我所评论的,我已经为您重写了代码: 控制器:
(function () {
angular
.module('app', [])
.controller('ContestController', [ContestController]);
function ContestController() {
var self = this;
self.data = {
greeting: 'Welcome my app!',
contests: [
{
name: 'Seahawks',
id: 1
}, {
name: 'Colts',
id: 2
}, {
name: 'Badgers',
id: 3
}, {
name: 'Rams',
id: 4
}
],
currentTab: 0
};
self.data.selectTab = function (tab) {
self.data.currentTab = tab;
}
}
})();
<div>
<div ng-controller="ContestController as contest">
<h2>{{contest.data.greeting}}</h2>
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Select a team!
<span class="caret"></span></button>
<ul class="dropdown-menu">
<li ng-repeat="c in contest.data.contests">
<a href ng-click="contest.data.selectTab(c.id)">{{c.name}}</a>
</li>
</ul>
<p ng-show="contest.data.currentTab > 0">{{contest.data.contests[contest.data.currentTab - 1].name}} Contest!</p>
</div>
<p>There should be content displayed above me when a team is clicked. </p>
</div>
</div>
Html:
(function () {
angular
.module('app', [])
.controller('ContestController', [ContestController]);
function ContestController() {
var self = this;
self.data = {
greeting: 'Welcome my app!',
contests: [
{
name: 'Seahawks',
id: 1
}, {
name: 'Colts',
id: 2
}, {
name: 'Badgers',
id: 3
}, {
name: 'Rams',
id: 4
}
],
currentTab: 0
};
self.data.selectTab = function (tab) {
self.data.currentTab = tab;
}
}
})();
<div>
<div ng-controller="ContestController as contest">
<h2>{{contest.data.greeting}}</h2>
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Select a team!
<span class="caret"></span></button>
<ul class="dropdown-menu">
<li ng-repeat="c in contest.data.contests">
<a href ng-click="contest.data.selectTab(c.id)">{{c.name}}</a>
</li>
</ul>
<p ng-show="contest.data.currentTab > 0">{{contest.data.contests[contest.data.currentTab - 1].name}} Contest!</p>
</div>
<p>There should be content displayed above me when a team is clicked. </p>
</div>
</div>
{{contest.data.greeting}
选择一个团队!
-
{{contest.data.contents[contest.data.currentTab-1].name}}contest
单击团队时,应该会在我上方显示内容
需要注意的几点:
1) 您应该努力在所有控制器属性及其数据之间添加“.”(例如,使用对象属性,而不仅仅是设置原语。这就是为什么在重写中我将所有内容都指定给数据对象属性的原因
2) 您使用的是不属于它们的绑定表达式。例如,在ng中单击并显示ng。我感到困惑
3) 您还试图在控制器中使用类似于绑定的表达式,这些表达式带有“active”属性,我不相信这些属性会以您认为的方式进行转换
4) 最好的做法是将css链接放在文档的头部,将javascript标记放在body标记之前。还有两个链接指向bootstrap的css
如果您对我的示例有任何疑问,请随时发表评论 我已经为你改写了这篇文章()@MikeCheel如果你能像answerI一样成功,我一定会给你一票。谢谢你的回答@jyrkim非常感谢迈克。我对这个有棱角的东西大概有一个星期了,但我觉得它真的很有用。我很高兴它有帮助。正如我所说的,请随意询问有关代码的问题,我将尝试回答它们。