基于angular-utils-ui-breadcrumbs使用心得(分享)


Posted in Javascript onNovember 03, 2017

angular-utils-ui-breadcrumbs是一个用来自动生成面包屑导航栏的一个插件,需要依赖angular、UIRouter和bootstrap3.css。生成的界面截图如下,点击相应的面包屑会跳转到相应的路由,点击相应的路由也会自动生成相应的面包屑:

基于angular-utils-ui-breadcrumbs使用心得(分享)

安装:npm install angular-utils-ui-breadcrumbs

github:https://github.com/michaelbromley/angularUtils/tree/master/src/directives/uiBreadcrumbs

模块依赖:

var app = angular.module('myapp', ['ui.router.state.events','angularUtils.directives.uiBreadcrumbs']);

这里使用了ui.router.state.events模块,因为该uiBreadcrumbs依赖于$stateChangeSuccess事件,而uiRouter在1.x版本之后推荐使用Transition钩子,为了兼容原来的版本,将不被推荐的state events事件封装到了stateEvent.js文件中,该文件在UIRouter包中,所以我们需要引入该文件,angularUtils.directives.uiBreadcrumbs模块已经依赖了ui.router模块,我们不需要在这里重复引入。

文件目录结构如下:

基于angular-utils-ui-breadcrumbs使用心得(分享)

<!--index.html-->
<!DOCTYPE html>
<html lang="en" ng-app="myapp" ng-strict-di>
<head>
 <meta charset="UTF-8">
 <title>angular-utils-ui-breadcrumbs</title>
 <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet">
</head>
<body>
<ui-breadcrumbs displayname-property="data.displayName" abstract-proxy-property="data.proxy" template-url="./uiBreadcrumbs.tpl.html"></ui-breadcrumbs>
<ui-view name="home"></ui-view>
</body>
<script src="https://cdn.bootcss.com/angular.js/1.6.0/angular.min.js"></script>
<script src="https://cdn.bootcss.com/angular-ui-router/1.0.3/angular-ui-router.min.js"></script>
<script src="stateEvents.js"></script>
<script src="uiBreadcrumbs.js"></script>
<script src="index.js"></script>
</html>
//index.js
var app = angular.module('myapp', ['ui.router.state.events','angularUtils.directives.uiBreadcrumbs']);

app.config(['$stateProvider', '$urlRouterProvider', ($stateProvider, $urlRouterProvider) =>{
 $urlRouterProvider.otherwise('/home/production');
 $stateProvider
  .state('home', {
   abstract: true,
   url: '/home',
   data: {
    proxy: 'home.info'
   },
   views: {
    'home@': {
     template: '<div ui-view="content"></div>'
    }
   }
  })
  .state('home.info', {
   url: '/info',
   data: {
    displayName: 'home'
   },
   views: {
    'content@home': {
     template: '<a ui-sref="^.production">production</a>'
    }
   }
  })
  .state('home.production', {
   url: '/production',
   data: {
    displayName: 'production'
   },
   views: {
    'content@home': {
     template: '<a ui-sref=".fruits">fruits</a>'
    }
   }
  })
  .state('home.production.fruits', {
   url: '/fruits',
   data: {
    displayName: 'fruits'
   },
   views: {
    'content@home': {
     template: `<ul>
      <li><a ui-sref=".detail({type: 'apple'})">apple</a></li>
      <li><a ui-sref=".detail({type: 'banane'})">banane</a></li>
      <li><a ui-sref=".detail({type: 'pear'})">pear</a></li>
     </ul>`
    }
   }
  })
  .state('home.production.fruits.detail', {
   url: '/:type',
   data: {
    displayName: 'detail'
   },
   views: {
    'content@home': {
     template: '<div>{{$resolve.fruit}}</div>'
    }
   },
   resolve: {
    fruit: ['$stateParams', $stateParams =>{
     return $stateParams.type
    }]
   }
  })
}]);

下面详细说明一下该插件的使用方法:

<ui-breadcrumbs displayname-property="data.displayName"
    [template-url=""]
    [abstract-proxy-property=""]>
</ui-breadcrumbs>

dispalyname-property:(必须的),该属性指向了你声明路由时候的state配置对象的某个属性,该属性的值就是在该路由下面包屑会展示的值,如果没有指定,将会展示state的name属性。

template-url: (可选)指定uiBreadcrumbs.tpl.html的路径,该文件是ui-breadcrumbs指令的模版,如果不指定,将默认使用以下目录,以下是源码的内容:

  var moduleName = 'angularUtils.directives.uiBreadcrumbs';
 var templateUrl = 'directives/uiBreadcrumbs/uiBreadcrumbs.tpl.html';

 /**
  * Module
  */
 var module;
 try {
  module = angular.module(moduleName);
 } catch(err) {
  // named module does not exist, so create one
  module = angular.module(moduleName, ['ui.router']);
 }

abstract-proxy-property: (可选),当使用abstract state的时候,我们是不能够transition到该状态的。因此我们就不能够展示该状态的面包屑,因为当点击一个abstract state将会导致一个异常,所以为了解决这种情况,我们可以让abstract-proxy-property指向一个state config属性,该属性的值是某个state.name,即某个路由,当需要显示abstract state的面包屑的时候,将会寻找该state.name来代替该abstract state,如以上例子,我们指定了home.info这个状态。

以上这篇基于angular-utils-ui-breadcrumbs使用心得(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
如何学习Javascript入门指导
Nov 01 Javascript
js数组的操作指南
Dec 28 Javascript
AngularJS语法详解(续)
Jan 23 Javascript
jQuery插件MixItUp实现动画过滤和排序
Apr 12 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
AngularJs中route的使用方法和配置
Feb 04 Javascript
ASP.NET jquery ajax传递参数的实例
Nov 02 Javascript
详解Angularjs 自定义指令中的数据绑定
Jul 19 Javascript
animate.css在vue项目中的使用教程
Aug 05 Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 Javascript
详解Node.js使用token进行认证的简单示例
May 25 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
Nov 03 #Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
Nov 03 #Javascript
微信小程序自动客服功能
Nov 02 #Javascript
微信小程序选择图片和放大预览图片功能
Nov 02 #Javascript
微信小程序实现图片放大预览功能
Oct 22 #Javascript
极简主义法编写JavaScript类
Nov 02 #Javascript
利用nvm管理多个版本的node.js与npm详解
Nov 02 #Javascript
You might like
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
用PHP调用Oracle存储过程
2006/10/09 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
探讨PHP调用时间格式的参数详解
2013/06/06 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
JavaScript 事件对象的实现
2009/07/13 Javascript
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
python画图常规设置方式
2020/03/05 Python
深入分析python 排序
2020/08/24 Python
通过代码实例了解Python异常本质
2020/09/16 Python
介绍一些UNIX常用简单命令
2014/11/11 面试题
优秀求职自荐信怎样写
2013/12/18 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
初中美术教学反思
2016/02/17 职场文书
导游词之广州陈家祠
2019/10/21 职场文书