Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular JS下拉列表,使用ng click和ng show显示动态内容?_Javascript_Jquery_Html_Angularjs - Fatal编程技术网

Javascript Angular JS下拉列表,使用ng click和ng show显示动态内容?

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://

这是我的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://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非常感谢迈克。我对这个有棱角的东西大概有一个星期了,但我觉得它真的很有用。我很高兴它有帮助。正如我所说的,请随意询问有关代码的问题,我将尝试回答它们。