1.angular路由介绍
angular路由功能是一个纯前端的解决方案,与我们熟悉的后台路由不太一样。
后台路由,通过不同的 url 会路由到不同的控制器 (controller) 上,再渲染(render)到 html。
angular前端路由,需要提前对指定的 ng-app 定义路由规则 (routeProvider), 通过不同的 url 告诉 ng-app 加载哪个 html ,再渲染到 ng-app 的视图 ng-view 中。
2.安装
引入 angular-route.js就可以了
3.在模块中声明注入对ngRoute的依赖
var app = angular.moudule('app',['ngRoute']);
4.定义路由表
两种方法 :
(1)when(path,route)
path : string类型,表示该路由规则所匹配的路径,它将与地址栏内容($location.path)值进行匹配。 如果需要匹配参数,可以写成 /views/:name,参数保存在$routeParams
route : 是一个object,用来指定当path匹配后的一系列配置项,主要有这几个参数:
a: controller // function或者string类型,在当前模板上执行controller函数,生成新的scope
b: controllerAs // string类型,为controller指定别名
c: template // function或者string类型,视图所用的模板,这部分将被 ngView 引用
d: templateUrl // string或function类型,当视图模板为单独的html文件或是使用了<script type="text/ng-temp">时使用
e: resolve // 指定当前controller所依赖的其他模块
f: redireactTo // 重定向地址
(2)otherwise(params)
当对应路径匹配不到时,我们可以配置一个redirectTo参数,让它定向到404或者首页
var app = angular.moudule('app',['ngRoute']).config(function($routeProvider){ $routeProvider .when('/',{ templateUrl : 'views/main.html', contorller : 'mainCtrl' }) .when('/day/:id',{ templateUrl : 'views/day.html', contorller : 'dayCtrl' }) .otherwise({ redirectTo : '/' }) })
5.在主视图模板中指定加载子视图的位置
我们的单页面程序都是局部刷新的,这个局部就是 ng-view
6.我仿照简书的样式做了个响应式的文章发布系统,给大家分享下
(1)游览器效果
a.文章列表页
b.点击“写文章”
c.点击文章标题,进入详细页
d.手机上效果也感觉不错
(2)源码非常简单