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 相关文章推荐
一行命令搞定node.js 版本升级
Jul 20 Javascript
浅谈Sticky组件的改进实现
Mar 22 Javascript
Bootstrap每天必学之模态框(Modal)插件
Apr 26 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
Mar 07 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
Aug 23 Javascript
JS动态显示倒计时效果
Dec 12 Javascript
详解vue3.0 的 Composition API 的一种使用方法
Oct 26 Javascript
vue backtop组件的实现完整代码
Apr 07 Vue.js
JavaScript利用html5新方法操作元素类名详解
Nov 27 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+XML 制作简单的留言本 图文教程
2009/11/02 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
jQuery 使用手册(一)
2009/09/23 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
网络维护管理员的自我评价分享
2013/11/11 职场文书
自考毕业自我鉴定
2014/03/18 职场文书
保护母亲河倡议书
2014/04/14 职场文书
毕业生求职信
2014/06/10 职场文书
费城故事观后感
2015/06/10 职场文书
2015年物流客服工作总结
2015/07/27 职场文书