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 scrollTop正解使用方法
Nov 14 Javascript
AngularJS入门教程之Select(选择框)详解
Jul 27 Javascript
浅谈javascript alert和confirm的美化
Dec 15 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
Apr 22 Javascript
Easyui在treegrid添加控件的实现方法
Jun 23 Javascript
JavaScript异步上传图片文件的实例代码
Jul 04 Javascript
jQuery扩展_动力节点Java学院整理
Jul 05 jQuery
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
AngularJS实现与后台服务器进行交互的示例讲解
Aug 13 Javascript
vue单页面在微信下只能分享落地页的解决方案
Apr 15 Javascript
如何基于原生javaScript生成带图片的二维码
Nov 21 Javascript
如何使用原生Js实现随机点名详解
Jan 06 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使用exec shell命令注入的方法讲解
2013/11/12 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
8个PHP数组面试题
2015/06/23 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
JavaScript实用技巧(一)
2010/08/16 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
pandas.cut具体使用总结
2019/06/24 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
python基础教程之while循环
2019/08/14 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
业务员简历自我评价
2014/03/06 职场文书
置业顾问岗位职责
2015/02/09 职场文书
2015年体育部工作总结
2015/04/02 职场文书
小学生节水倡议书
2015/04/29 职场文书
python 批量压缩图片的脚本
2021/06/02 Python