AngualrJS中的Directive制作一个菜单_AngularJS

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

<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_directive
angularjs中directive
angualr directive、angualrjs directive、angualr2 directive、angularjs directive、angularjs2 directive,以便于您获取更多的相关知识。

时间: 2024-08-31 12:31:49

AngualrJS中的Directive制作一个菜单_AngularJS的相关文章

AngularJS中的Directive自定义一个表格_AngularJS

先给大家说下表格的需求: ● 表格结构 <table> <thead> <tr> <th>Name</th> <th>Street</th> <th>Age</th> </tr> </thead> <tbody> <tr> <td>></td> <td>></td> <td>>

link中使用codefirst制作一个软件,如何设计多种权限角色的控制?

问题描述 link中使用codefirst制作一个软件,如何设计多种权限角色的控制? link中使用codefirst制作一个软件,如何设计多种权限角色的控制? 解决方案 http://www.cnblogs.com/ForEvErNoME/p/3624599.html

新手求指导,c#:使用无限循环制作一个菜单选单,再通过switch语句来选择所要的功能

问题描述 新手求指导,问一下大神们如何制作菜单栏,如下,问一下代码如何写?谢谢•Addcustomer'sdetails(a)•Collecttheusagedata(c)•Calculateanddisplay(d)•Exit(x)①按下a,会显示Addcustomer'sdetails(a)的功能②按下c,会显示Collecttheusagedata(c)的功能③按下d,会显示Calculateanddisplay(d)的功能④按下x,Exit(x) 解决方案 解决方案二:一般是按ALT组合

用Flash制作一个菜单的实例

菜单 效果如下: 1.制作几个图形和电影元件作为显示部件.2.主场景第一帧上: //mn布尔开关 var mn = false; //贮存四个按钮坐标初始值 var positionm0y = m0._y; var positionm1y = m1._y; var positionm2y = m2._y; var positionm3y = m3._y; //v移动速度 var v = 5; //设置菜单名称 var myarraytitle1 = new Array("英才学校", 

VC中利用FLASH制作图声并茂的动画程序

前言: FLASH是一种功能强大的矢量动画,可以制作出各种华丽的电影效果,应用非常广泛!这也给予我们一个启迪:如果在VC程序中能够播放FLASH动画,将为程序增色不少,而且许多原本不易实现的功能,现在都可以轻松实现! 像金山词霸的安装程序主控界面就利用了FLASH,效果相当好.本文中笔者将制作一个完整的多媒体软件,将一些关键性技术介绍给大家,并提供全部代码供大家参考. 本文使用到的关键性技术: (1)利用VB制作MS AGENT播放模块. (2)将该播放模块.FLASH动画文件SWF与其它必要资

FreeBSD4.x中制作启动菜单

很多朋友可能已经注意到FreeBSD 5.1 Release中新增加了一个非常漂亮的启动菜单,如下图: 是不是很漂亮呢?Scott(scottl@freebsd.org)写了一篇关于如何在FreeBSD5.0上制作这个启动菜单的说明,但由于Scott没有考虑FreeBSD4.x,所以FreeBSD4.x的朋友就不能使用这个漂亮的菜单了. 不过不用担心,我在Scott所写的菜单的基础上作了一点改动,使其可以在FreeBSD4.x上正常工作,你可以到这里下载:http://www.cnfug.org

怎么制作一个联动菜单?相应的省对应市,相应的市对应相应的县?

问题描述 怎么制作一个联动菜单?相应的省对应市,相应的市对应相应的县? 三个选择下拉框,对应省.市.县,三者间有对应关系,求思路或者案例,不胜感激! 解决方案 http://www.cnblogs.com/taoweiji/p/3710262.htmlhttp://www.cnblogs.com/ajun/articles/2153031.html 解决方案二: 第一级菜单值发生变化时触发js函数,js函数根据菜单值通过ajax获取第二级菜单选项,然后在回调函数中动态生成第二级菜单,其他的也是如

c#代码-c#中窗体,制作视频播放器的菜单(listview)

问题描述 c#中窗体,制作视频播放器的菜单(listview) 怎么讲其中的值获得,在数据库中存了地址,怎么将它与菜单中的名字结合起来!!急!!!!穷人请原谅!!求大神相助!!! 解决方案 C#视频播放器实现右键菜单 解决方案二: 每个menustripitem 有一个tag属性你产生菜单,把地址放在这个tag属性里面.点击的时候同过 ((menustripitem)sender).tag.tostring() 获取

AngualrJS中每次$http请求时的一个遮罩层Directive_AngularJS

AngularJS是一款非常强大的前端MVC框架.在AngualrJS中使用$http每次向远程API发送请求,等待响应,这中间有些许的等待过程.如何优雅地处理这个等待过程呢? 如果我们在等待过程中弹出一个遮罩层,会是一个比较优雅的做法. 这就涉及到了对$http的请求响应进行拦截了.请求的时候,弹出一个遮罩层,收到响应的时候把遮罩层隐藏. 其实,$httpProvider已经为我们提供了一个$httpProvider.interceptors属性,我们只需要把自定义的拦截器放到该集合中就可以了