项目上有一个新需求,就是需要根据json文件动态生成路由状态,查阅了一下资料,现在总结一下发出来:

首先项目用到的是angular的UI-路由,所以必须引入angular.js和angular-ui-router.js两个js文件,如下例子:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Example</title> <script src="bower_components/angular/angular.js"></script> <script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script> <script src="js/routing.js"></script> <script src="js/app.js"></script> </head> <body ng-app="App" ng-controller="MainController"> <a ng-click="reload()">reload</a> <a ui-sref="xxx">xxx</a> <a ui-sref="yyy">yyy</a> <div ui-view></div> </body> </html>
然后是json文件的一些数据,如下
{ "xxx": {
"url": "/xxx",
"templateUrl": "templates/xxx.html"
},
"yyy": {
"url": "/yyy",
"templateUrl": "templates/yyy.html"
},
"ccc": {
"url": "/ccc",
"templateUrl": "templates/yyy.html"
},
"zzz": {
"url": "/zzz",
"templateUrl": "templates/zzz.html"
}
}
之后定义一个服务,定义个方法用来配置获取json文件的ajax请求的地址,主方法是发送ajax并且对结果进行循环写入路由状态。
'use strict'
angular.module('Routing', ['ui.router'])
.provider('router', function ($stateProvider) {
var urlCollection;
this.$get = function ($http, $state) {
return {
setUpRoutes: function () {
$http.get(urlCollection).success(function (collection) {
for (var routeName in collection) {
if (!$state.get(routeName)) {
$stateProvider.state(routeName, collection[routeName]);
}
}
});
}
}
};
this.setCollectionUrl = function (url) {
urlCollection = url;
}
})
最后是最关键的angular配置阶段和运行阶段的代码,配置阶段要求至少给出一种状态,如$stateProvider.state('home', {url: '/home',templateUrl: 'templates/home.html'});
并且将默认状态配置好$urlRouterProvider.otherwise('/home');随后调用上面的服务的setCollectionUrl 方法对url地址进行配置,方便发送ajax请求,最后在angular的运行阶段的run方法中调用setUpRoutes方法将json文件的数据根据一定的格式进行状态的动态写入,代码如下:
angular.module('App', ['ui.router', 'Routing'])
.config(function ($stateProvider, $urlRouterProvider, routerProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'templates/home.html'
});
$urlRouterProvider.otherwise('/home');
routerProvider.setCollectionUrl('js/routeCollection.json');
})
.run(function (router) {
router.setUpRoutes();
})
;
此,动态获取angular路由状态的例子就介绍完了,感兴趣的可以看下原文地址和原文代码的github,分别如下:
github地址
github上用git clone下来之后,会看到项目中有个bower.json文件,并且没有上述的两个js文件,我们只需在工程中使用node的包管理器npm下载bower,然后在该项目的命令行中输入bower install 即可下载下来项目要用到的js文件。
以上所述是小编给大家介绍的Angularjs根据json文件动态生成路由状态,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# angular
# json
# 路由状态
# AngularJS读取JSON及XML文件的方法示例
# 使用AngularJS 跨站请求如何解决jsonp请求问题
# AngularJS中的JSONP实例解析
# AngularJS表单验证功能分析
# AngularJS内置指令
# AngularJS 日期格式化详解
# Angularjs中UI Router全攻略
# AngularJS入门教程之学习环境搭建
# AngularJS获取json数据的方法详解
# 小编
# 的是
# 有个
# 在此
# 只需
# 上有
# 感兴趣
# 给大家
# 要用
# 管理器
# 该项
# 所述
# 最关键
# 命令行
# 给我留言
# 感谢大家
# 疑问请
# 有任何
# app
# routing
相关文章:
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
专业网站建设制作报价,网页设计制作要考什么证?
如何做网站制作流程,*游戏网站怎么搭建?
小建面朝正北,A点实际方位是否存在偏差?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
网站制作员失业,怎样查看自己网站的注册者?
建站DNS解析失败?如何正确配置域名服务器?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
贸易公司网站制作流程,出口贸易网站设计怎么做?
建站之星代理平台如何选择最佳方案?
香港网站服务器数量如何影响SEO优化效果?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
开源网站制作软件,开源网站什么意思?
建站主机选购指南:核心配置与性价比推荐解析
如何通过建站之星自助学习解决操作问题?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
动图在线制作网站有哪些,滑动动图图集怎么做?
C#如何序列化对象为XML XmlSerializer用法
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
如何在万网自助建站中设置域名及备案?
如何用好域名打造高点击率的自主建站?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
制作网页的网站有哪些,电脑上怎么做网页?
安云自助建站系统如何快速提升SEO排名?
已有域名和空间如何搭建网站?
图册素材网站设计制作软件,图册的导出方式有几种?
如何破解联通资金短缺导致的基站建设难题?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
建站之星安装步骤有哪些常见问题?
微信h5制作网站有哪些,免费微信H5页面制作工具?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何在宝塔面板中创建新站点?
建站之星安装路径如何正确选择及配置?
如何在自有机房高效搭建专业网站?
北京企业网站设计制作公司,北京铁路集团官方网站?
在线制作视频的网站有哪些,电脑如何制作视频短片?
建站10G流量真的够用吗?如何应对访问高峰?
海南网站制作公司有哪些,海口网是哪家的?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
如何用AWS免费套餐快速搭建高效网站?
如何通过西部建站助手安装IIS服务器?
如何快速搭建响应式可视化网站?
北京网站制作网页,网站升级改版需要多久?
公众号网站制作网页,微信公众号怎么制作?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
,怎么用自己头像做动态表情包?
*请认真填写需求信息,我们会在24小时内与您取得联系。