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 相关文章推荐
出现“不能执行已释放的Script代码”错误的原因及解决办法
Aug 29 Javascript
jQuery代码优化 事件委托篇
Nov 01 Javascript
React.js入门学习第一篇
Mar 30 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
Oct 25 Javascript
利用hasOwnProperty给数组去重的面试题分享
Nov 05 Javascript
vue2.0 如何在hash模式下实现微信分享
Jan 22 Javascript
详解小程序云开发数据库
May 20 Javascript
微信小程序实现侧边栏分类
Oct 21 Javascript
vue实现图片按比例缩放问题操作
Aug 11 Javascript
vue3+typescript实现图片懒加载插件
Oct 26 Javascript
vant中的toast层级改变操作
Nov 04 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
使用 php4 加速 web 传输
2006/10/09 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
读jQuery之二(两种扩展)
2011/06/11 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
js表单验证实例讲解
2016/03/31 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
最新的互联网创业计划书
2014/01/10 职场文书
关于运动会的稿件
2014/02/02 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
中学生逃课检讨书
2015/02/17 职场文书
主持人开场白台词
2015/05/29 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python