由于某些设计原因,AngularJS原生的路由模块有一些缺点,比如说不支持view的嵌套等,所以有许多社区开始自己设计路由模块,最有代表性的就是ui-route了。
ui-route是一个功能强大的路由模块,它在原生的ng-route模块上加强了其他方面的功能。
现在就开始做几个DEMO接触一下ui-route。
<!--初始页面--> <!doctype html> <meta charset="UTF-8"> <html> <head> <link href="https://www.jb51.net/self.css"> </head> <body > <div ng-app="myApp"> <div><a ui-sref = "index">首页</a></div> <div ui-view></div><!--这里是路由视图存放的地方--> </div> <script src="https://www.jb51.net/angular.min.js"></script> <script src="https://www.jb51.net/angular-ui-router.js"></script> <script src="https://www.jb51.net/test2.js"></script> </body> </html>
首先必须引用angular-ui-router.js文件。这个文件是区别于AngularJs的angular-route.js文件的。而且必须把该文件放在angular.min.js下面。
观察一下Html的body代码,可以发现有三个地方与使用原生的ng-route时的body代码不同。他们分别是ui-sref , index 以及ui-view 。先跳过,看一下如何初始化ui-route模块。
初始化ui-route模块:
var app = angular.module('myApp',['ui.router']); app.config(["$stateProvider",function($stateProvider){ $stateProvider .state("index",{ url:'https://www.jb51.net/', template:'<div>我是首页内容</div>' }) }]);
首先,和原生ng-route路由模块相似的是,必须先把ui-route注入。然后再进行具体的配置。与原生的ng-route不同的是,ui-route用state() 代替了原生的when() ,它在when(),的基础上新增了一个参数,这里是index,用以区分这部分路由对哪一个命令进行响应。
回到之前的<div><a ui-sref = "index">首页</a></div> ,大概就知道他们视图和它之间的关系了。ui-view 代替了以往的ng-view ,ui-sref 替换掉了以前的ng-href,而它也不再是指向链接,而是指向“导航”的名字。
其中的url属性可以唯一标识改路由的后续地址,用以跟后面的路由进行区分。
更多关于AngularJS相关内容感兴趣的读者可查看本站专题:《AngularJS指令操作技巧总结》、《AngularJS入门与进阶教程》及《AngularJS MVC架构总结》