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 相关文章推荐
自定义右键属性覆盖浏览器默认右键行为实现代码
Feb 02 Javascript
javascript相等运算符与等同运算符详细介绍
Nov 09 Javascript
JavaScript实现的in_array函数
Aug 27 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
Sep 19 Javascript
js实现上下左右弹框划出效果
Mar 08 Javascript
详解vue前后台数据交互vue-resource文档
Jul 19 Javascript
JavaScript贪吃蛇小组件实例代码
Aug 20 Javascript
详解Angular5路由传值方式及其相关问题
Apr 28 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
May 23 Javascript
如何解决日期函数new Date()浏览器兼容性问题
Sep 11 Javascript
vue实现水波涟漪效果的点击反馈指令
May 31 Vue.js
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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
COM in PHP (winows only)
2006/10/09 PHP
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
golang与PHP输出excel示例
2016/07/22 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
树结构之JavaScript
2017/01/24 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
Python实现把数字转换成中文
2015/06/29 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
python 字典中取值的两种方法小结
2018/08/02 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
校园达人秀策划书
2014/01/12 职场文书
骨干教师培训方案
2014/05/06 职场文书
检讨书格式
2015/05/07 职场文书
欠条范文
2015/07/03 职场文书
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA