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 相关文章推荐
JavaScript Event事件学习第一章 Event介绍
Feb 07 Javascript
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
使用jquery实现简单的ajax
Jul 08 Javascript
jquery通过name属性取值的简单实现方法
Jun 20 Javascript
纯css下拉菜单 无需js
Aug 15 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 Javascript
js实现京东轮播图效果
Jun 30 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
Vue中&quot;This dependency was not found&quot;问题的解决方法
Jun 19 Javascript
Vue-component全局注册实例
Sep 06 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
Jun 21 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脚本中include文件出错解决方法
2008/11/20 PHP
php的memcached客户端memcached
2011/06/14 PHP
php类的定义与继承用法实例
2015/07/07 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
Python单链表的简单实现方法
2014/09/23 Python
Python切片知识解析
2016/03/06 Python
Django开发中的日志输出的方法
2018/07/02 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
python 实现超级玛丽游戏
2020/11/25 Python
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
主要的Ajax框架都有什么
2013/11/14 面试题
毕业生实习鉴定
2013/12/11 职场文书
四年级下册教学反思
2014/02/01 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL