AngualrJS中的Directive制作一个菜单

 更新时间:2016年01月26日 17:01:30   作者:Darren Ji  
本文给大家介绍AngualrJS中的Directive制作一个菜单,涉及到angularjs directive相关知识,本文介绍的非常详细,具有参考借鉴价值,特此分享供大家学习

说下我经常写菜单的方式:

<ul>
<li data-ng-class="{'active': highlight('/orders')}">
<a href="#/orders">Orders</a>
</li>
</ul> 

菜单项是否高亮显示取决于controller中的highlight方法。

vm.highlight = funciton(path){
return $locaiton.path().substr(0, path.lenght) === path;
}

如果以Directive的方式会更简洁。

<ul menu-highlighter highlight-class-name="active">
<li><a href="#/customers">Customers</a></li>
<li><a href="#/orders">Customers</a></li>
<li><a href="#/about">Customers</a></li>
</ul> 

Directive大致是:

(function(){
var injectParams = ['$location'];
var menuHighlighter = function($location){
var link = function(scope, element){
function setActive(){
var path = $location.path();
var className = scope.highlightClassName || 'active';
if(path){
angular.forEac(element.find('li'), function(li){
//<a href="#/customers">Customers</a>
var anchor = li.querySelector('a');
//#/customers
var href=(anchor && anchor.href) ? anchor.href : anchor.getAttribute('data-href').replace('#','');
//customers
var trimmedHref = href.substr(href.indexOf('#/')+1, href.length);
var basePath = path.substr(0, trimmedHref.length);
if(trimmedHref === basePath){
angular.element(li).addClass(className);
} else {
angular.element(li).removeClass(className);
}
});
} 
}
setActive();
scope.$on('$locationChangeSuccess', setActive);
};
return {
restrict: 'A',
scope: {
highlightClassName: '@'
},
link: link
}
};
menuHighlighter.$inject = injectParams;
angular.module('my.directives')
.directive('menuHighlighter', menuHighlighter);
}()); 

以上内容是针对AngualrJS中的Directive制作一个菜单的相关知识,希望对大家有所帮助。

相关文章

  • AngularJS控制器controller给模型数据赋初始值的方法

    AngularJS控制器controller给模型数据赋初始值的方法

    这篇文章主要介绍了AngularJS控制器controller给模型数据赋初始值的方法,涉及AngularJS控制器controller简单赋值操作实现技巧,需要的朋友可以参考下
    2017-01-01
  • Angularjs2不同组件间的通信实例代码

    Angularjs2不同组件间的通信实例代码

    AngualrJs2官方方法是以@Input,@Output来实现组件间的相互传值,而且组件之间必须父子关系,下面给大家提供一个简单的方法,实现组件间的传值,不仅仅是父子组件,跨模块的组件也可以实现传值
    2017-05-05
  • angularJs中$scope数据序列化的实例

    angularJs中$scope数据序列化的实例

    今天小编就为大家分享一篇angularJs中$scope数据序列化的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • AngularJS入门教程之ng-checked 指令详解

    AngularJS入门教程之ng-checked 指令详解

    本文主要讲解AngularJS ng-checked 指令,在这整理ng-checked 指令的基础知识,并附代码实例,有需要的小伙伴可以参考下
    2016-08-08
  • Angular2使用jQuery的方法教程

    Angular2使用jQuery的方法教程

    这篇文章主要给大家介绍了关于Angular2使用jQuery的方法教程,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来跟着小编一起学习学习吧。
    2017-05-05
  • AngularJS 2.0入门权威指南

    AngularJS 2.0入门权威指南

    这篇文章主要介绍了AngularJS 2.0入门权威指南的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • AngularJS extend用法详解及实例代码

    AngularJS extend用法详解及实例代码

    这篇文章主要介绍了AngularJS extend用法详解的相关资料,并附实例代码,帮助大家学习理解,需要的朋友可以参考下
    2016-11-11
  • AngularJS中处理多个promise的方式

    AngularJS中处理多个promise的方式

    promise是一种用异步的方式处理值的方法,promise是对象,代表了一个函数最终可能的返回值或者抛出的异常,在与远程对象打交道时我们可以把他看作是远程对象的一个代理,通过本文给大家介绍AngularJS中处理多个promise的方式及什么是promise,需要的朋友参考下
    2016-02-02
  • AngularJs中$cookies简单用法分析

    AngularJs中$cookies简单用法分析

    这篇文章主要介绍了AngularJs中$cookies简单用法,结合实例形式分析了AngularJS使用$cookies存储变量相关操作技巧与注意事项,需要的朋友可以参考下
    2019-05-05
  • ionic4+angular7+cordova上传图片功能的实例代码

    ionic4+angular7+cordova上传图片功能的实例代码

    ionic是一个垮平台开发框架,可通过web技术开发出多平台的应用。这篇文章主要介绍了ionic4+angular7+cordova上传图片功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-06-06

最新评论