AngualrJS中的Directive制作一个菜单


Posted in Javascript onJanuary 26, 2016

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

<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制作一个菜单的相关知识,希望对大家有所帮助。

Javascript 相关文章推荐
js中各浏览器中鼠标按键值的差异
Apr 07 Javascript
5款JavaScript代码压缩工具推荐
Jul 07 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
Jul 21 Javascript
javascript工厂方式定义对象
Dec 26 Javascript
AngularJS基础 ng-href 指令用法
Aug 01 Javascript
原生js实现焦点轮播图效果
Jan 12 Javascript
纯js实现隔行变色效果
Nov 29 Javascript
详解webpack模块加载器兼打包工具
Sep 11 Javascript
layui radio单选限制下一个radio单选的实例
Sep 03 Javascript
layui清除radio的选中状态实例
Nov 14 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
May 27 Javascript
如何使用gpu.js改善JavaScript的性能
Dec 01 Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 #Javascript
详解javascript new的运行机制
Jan 26 #Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
Jan 26 #Javascript
基于JavaScript实现瀑布流布局(二)
Jan 26 #Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
Jan 26 #Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
Jan 26 #Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
Jan 26 #Javascript
You might like
PHP入门速成教程
2007/03/19 PHP
php str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
python爬虫请求头的使用
2020/12/01 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
市场营销专业个人求职信范文
2013/12/14 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
社区文化建设方案
2014/05/02 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
优秀团员事迹材料
2014/12/25 职场文书
学校国庆节活动总结
2015/03/23 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
导游词之永泰公主墓
2019/12/04 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫