角度简单指令不起作用

时间:2015-01-19 01:29:28

标签: angularjs angularjs-directive

我是棱角分明的新人,对此非常兴奋。 我试图将我的顶级导航放入一个指令,因此它可以1)可恢复2)使我的HTML更容易阅读

然而,我不能让我的topMenu指令为我的生活工作。是不是可以看一眼我的小提琴,看看我做错了什么? 万分感谢,我失去了我的头发哈哈尔

http://jsfiddle.net/g6pb0m4a/ 这是我的menu.js文件

    //define menu controller
 var menu =  angular.module('MenuApp', [])
    menu.controller('MenuCtrl', [function() {
      var self = this;
      self.active= '1';
      self.navigation = [
    {
        menutext:"Home",
        url:"#/"
    },
    {
        menutext:"About App",
        url: "#/aboutapp",
        submenu:[
        {
            menutext:"Pricing",
            url: "#/pricing"
        }
        ]
    }
    ];

  }]);

menu.directive('topMenu', function() {
  return {
    restrict: 'E',
    template: '<h2>test</h2>'
  };
});

这是我的索引

<!DOCTYPE html>
<html>
<head>
<title>Fit Bit App</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js"></script>
<link href="css/default.css" rel="stylesheet">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
<script src ="app/controllers/menu.js"></script>
</head>

<body ng-app="MenuApp">
<header>
     <nav class="navbar navbar-inverse" data-ng-controller = "MenuCtrl as menuCtrl">
      <div class="container-fluid">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">WebSiteName</a>
        </div>
        <div class="collapse navbar-collapse" id="myNavbar">
          <ul class="nav navbar-nav" data-ng-repeat = "menuitem in menuCtrl.navigation">
            <li ng-if="!menuitem.submenu"><a href={{menutext.url}}>{{menuitem.menutext}}</a></li>
            <li class="dropdown" ng-if="menuitem.submenu"><a class="dropdown-toggle" data-toggle="dropdown" href="#">{{menuitem.menutext}}<span class="caret"></span></a>
                <ul class="dropdown-menu">
                    <li data-ng-repeat = "submenu in menuitem.submenu"><a href={{submenu.url}}>{{submenu.menutext}}</a></li>
                </ul>
            </li>
          </ul>
          <ul class="nav navbar-nav navbar-right">
            <li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
            <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
          </ul>
        </div>
      </div>
    </nav>

</header>

<div><top-menu></top-menu></div>

</body>
</html>

1 个答案:

答案 0 :(得分:2)

您的问题主要是由于您注册应用和控制器的地方。在您的小提琴中,您正在使用选项onLoad,因此jsfiddle将在window.onload内的脚本面板中加载脚本,这是在角度尝试引导应用程序之后发生的,因为它找到了ng-app指令。 HTML。而不是使用onLoad选项使用wrap in body(或head)选项,以便脚本面板中的脚本预先运行角度实例化您的应用MenuApp。 的 Working Fiddle