ngRoute简介
路由是AngularJS很重要的一环,它可以把你项目的页面串联起来,构成一个项目,常用的路由有ngRoute和ui-route,我这里先讲ngRoute。ngRoute是一个Module,提供路由和深层链接所需的服务和指令。
注意一点,和之前的文章不一样,使用ngRoute之前你需要引入另外一个js文件angular-route.js:
<script src="/UploadFiles/2021-04-02/angular.min.js">ngRoute包含内容如下:
名称 类型 作用 ngView Directive 路由的不同模板其实都是插入这个元素里 $routeProvider Provider 路由配置 $route Service 各个路由的url,view,controller $routeParams Service 路由参数使用ngRoute的基本流程如下:
- 在需要路由的地方使用ngView来定义视图模板。
- 在module中注入ngRoute模块
- 在config中用$routeProvider来对路由进行配置templateUrl,controller,resolve。
- 在每个controller中写业务逻辑
- 在controller中可以通过注入$routeParams来获得url上的参数
可以看下下面这个例子
color.html
<!DOCTYPE html> <html> <head> <meta charset="uft-8"/> <title></title> </head> <script src="/UploadFiles/2021-04-02/angular.min.js">red.html (其他页面类似,就不重复了)
<div style="background: red"> {{message}} </div>例子很简单,我们就只讲下路由的配置:
- 使用$routeProvider.when来配置路由的关系,方法接受两个参数,第一个参数是url的路径,第二个参数是配置url对应的templateUrl和controller。
- $routeProvider.otherwise方法相当于default。
路由模块化
可能你已经注意到了上面的都写在一起,如果项目越来越大,会不会很头疼,那么是不是可以把它模块化,每个模块都有直接的module,controller,config等。模块依赖的技术我们之前的module那篇文章已经讲过,那么就来看下带有路由的情况下,怎么模块化。
color.html:
<!DOCTYPE html> <html> <head> <meta charset="uft-8"/> <title></title> </head> <script src="/UploadFiles/2021-04-02/angular.min.js">可以看到我们的color.html文件是不是很简洁,config的路由配置里只有一行$routeProvider.otherwise方法,但是module却注入了除ngRoute外的三个module:”Module.red”,”Module.main”,”Module.green”,这其实是把path对应的路由提取成模块,使用了专门的js来处理它们,看起来和他们对应的模板相对应,我们来看下red.html对应的模块js:
red.js
angular.module('Module.red', ['ngRoute']) .config([ '$routeProvider', function ($routeProvider) { $routeProvider.when('/red', { templateUrl: 'red.html', controller: 'redController' }); } ]) .controller('redController', [ '$scope', function ($scope) { $scope.color='red'; $scope.message = 'This is red page'; } ]);路由的参数
那么路由怎么将参数传入到模板页呢?我们把上面的例子改造一下,通过例子来讲解:
main.js
angular.module('Module.main', ['ngRoute']) .config([ '$routeProvider', function ($routeProvider) { $routeProvider .when('/', { templateUrl: 'main.html', controller: 'mainController' }); } ]) .controller('mainController', [ '$scope', function ($scope) { $scope.message = 'This is main page'; $scope.colors=['blue','yellow','pink']; } ]);这里初始化了一个colors的数组,作为要传递的数据。
main.html
{{message}} <br> <ul> <li ng-repeat="color in colors"> <a href="#/color/{{color}}" rel="external nofollow" >{{color}}</a> </li> </ul>通过ng-repeat循环创建a链接,数组的元素通过链接传入。
colorId.js
angular.module('Module.colorId', ['ngRoute']) .config([ '$routeProvider', function ($routeProvider) { $routeProvider .when('/color/:colorId', { templateUrl: 'colorId.html', controller: 'colorIdController' }); } ]) .controller('colorIdController', [ '$scope','$routeParams', function ($scope,$routeParams) { $scope.color = $routeParams.colorId; $scope.message = 'This is ' +$routeParams.colorId +' page'; } ]);这里定义了一个colorId的模块,通过:colorId来匹配传入的参数,这里匹配到的是数组中的元素。例如/color/blue,那么匹配到的就是blue。
colorId.html
<div style="background: {{color}}"> {{message}} </div>最后在colorId上呈现出来。
如果是多个参数可以直接一一接到后面比如/color/:colorId/:year/:month/:day,和后面的参数也一一匹配,如/color/pink/2017/3/13。
支持*号:/color/:color/largecode/:largecode*/edit匹配/color/brown/largecode/code/with/slashes/edit的话,color将会匹配到brown,largecode将匹配到code/with/slashes。
支持"htmlcode">
<html> <head> <meta charset="uft-8"/> <title></title> </head> <script src="/UploadFiles/2021-04-02/angular.min.js">news.js
var news = angular.module("ngst-news", ["ngst-newsDetail"]); news.controller("MainController", ["$scope", function ($scope) { $scope.newsAarry = [{"id": "1", "title": "辽宁人大副主任王阳 浙江宁波市长卢子跃被免职"}, {"id": "2", "title": "今冬小雨缤纷,荔枝园地湿润壮旺荔枝果树,下刀环剥最狠"}, {"id": "3", "title": "百度任原搜索渠道总经理顾国栋为市场执行总监"}]; }]);news页面是一个新闻列表,在列表下面有个ng-view,点击新闻列表链接下面的ng-view进行路由切换。
newsDetails.html
{{message}}newsDetails.js
var news = angular.module("ngst-newsDetail", ['ngRoute']); news.config(["$routeProvider", function ($routeProvider) { $routeProvider.when("/newsDetail/:newsId", { templateUrl: 'newsDetail.html', controller: 'newsDetailController', resolve: { content: ['$q', '$timeout', "$route", function ($q, $timeout, $route) { var deferred = $q.defer(); $timeout(function () { deferred.resolve('新闻详情 id=' + $route.current.params.newsId); }, 1000); return deferred.promise; }] } }); }]) .controller("newsDetailController", ['$scope', 'content', function ($scope, content) { $scope.message = content; }]);这里使用$route.current.params来获得参数
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】