嵌套Angular指令

时间:2016-02-08 23:58:05

标签: javascript angularjs

我试图做一些理论上应该简单的事情。我已经用Google搜索了答案,但还没有找到任何有用的东西。我使用的是Angular JS 1.4.9。我想要发生的是:

<ul>
   <li><a href="#/search">Search</a></li>
   <li><a href="#/reports">Reports</a></li>
   <li><a href="#/about">About</a></li>
</ul>

转向:

Substring()

我想将此作为指令,以便当用户点击链接时,我可以应用&#34;活动&#34; LI元素的CSS样式。但是对于我的生活,我无法让它发挥作用。说实话,翻译和编译(如果其中任何一个都是它需要的)一直是我对Angular 1.x的弱点。

有人有任何想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

我没有看到使用翻译或编译的需要,我做了一个小指令来管理这个,所以我们有一些东西可以玩。下次如果您提供更多详细信息或代码示例会更好。

尝试这样的事情让我知道:

(function(angular) {
  'use strict';

  angular.module('app', [])
    .directive('siteMenu', [function () {
      return {
        restrict: 'AE',
        scope: {
          menus: '='
        },
        controller: SiteMenuController,
        controllerAs: 'vm',
        bindToController: true,
        templateUrl: 'site-menu-template.html'
      };

      function SiteMenuController() {
        var vm = this;

        vm.selected = 0;

        vm.onClick= function(index) {
          vm.selected = index; 
        };
      }
  }])

  .run(['$templateCache', function($templateCache) {
    $templateCache.put('site-menu-template.html',
      '<ul>' +
        '<li ng-repeat="menu in vm.menus" ng-click="onClick($index)" ng-class="{active: $index == vm.selected}">' +
          '<a ng-href="#/{{ menu }}">{{ menu }}</a>' +
        '</li>' +
      '</ul>'
    );
  }]);
})(window.angular);

指令用法:

<site-menu menus="['search', 'reports', 'about']"></site-menu>