ngRoute 路由

做单页面应用多是通过不同的url来识别出不同的页面展现的。

angularjs 为我们提供一个封装好的ngRoute工具

简单介绍用法 :

<div ng-view></div>

界面上放入一个 ng-view指令,待会儿界面会刷新这个区域,它也支持动画,可以通过添加css在切换视图时做一些动画。

我们一段一段来看

                var app = angular.module("Main", [‘ngRoute‘]);
                app.config(function ($locationProvider) {
                    $locationProvider.html5Mode(true); //最少要 ie10 才可以使用 html5mode 哦
                    //$locationProvider.html5Mode(false).hashPrefix("!");
                });

记得要依赖 ngRoute 模块

我们通过 config 来设置 $location to html5Mode , default 是 hashbang

             app.config(function ($routeProvider) {
                    $routeProvider.
                         when("/", {
                             template: ‘<div>product</div>‘,
                             controller: function () {
                                 console.log("in product");
                             }
                         }).
                         when("/:category", {
                             template: ‘<div>category</div>‘,
                             controller: function ($routeParams) {
                                 console.log("here");
                                 console.log($routeParams);
                             }
                         }).
                         when("/:category/:code", {
                             template: ‘<div>category and code</div>‘,
                             controller: function ($routeParams) {
                                 console.log($routeParams);
                                 console.log("in product code size");
                             }
                         }).
                         otherwise({
                             redirectTo: ‘/‘
                         });
                });

通过 $routeProvider.when 和 otherwise 我们就可以设置我们的视图 template , controller 对应到哪个URL了

每当URL装换的时候,angular会帮我们匹配 (基本原理就是用了html history api)

这里URl的格式是正对文件folder路径的 ":" 符合代表它是个参数,我们只好通过 $routeParams可以一块捕获

我举个例子 :

我们访问这里  xx.com/folder1/index.aspx (文件正正的路径)

经过 redirectTo ‘/‘ 就变成了 xx.com 也就匹配了 when(‘/‘)设置

那我们访问 xx.com/category1?key=value

会对应到  "/:category" 的设置 , 它是通过folder的数量来做配对的 (params 将会是  category=‘category1‘ key=value)

那我们在访问 xx.com/man/mk100?key=value&key2=value2

会对应到 ‘/:category/:code‘的设置 (params 是 category=‘man‘ code=‘mk100‘ key=value key2=value2)

angularjs 会依据模板和controller 绘画好视图后覆盖到ng-view中.

对应不支持htmlMode的朋友,可以使用hashbang mode , 其实差不了多少,只是难看一些罢了,还有后台比较难对 #! 做处理

这里举出这2个mode的区别

config 设置换成这样

   $locationProvider.html5Mode(false).hashPrefix(‘!‘);

我们访问这里  xx.com/folder1/index.aspx (文件正正的路径)

经过 redirectTo ‘/‘ 就变成了 xx.com/forlder1/index.aspx#!/ 也就匹配了 when(‘/‘)设置

(它没有像html5那样把整个路径改了,而只是添加了hash在后面)

那我们访问 xx.com/forlder1/index.aspx#!/category1?key=value 会对应到  "/:category" 的设置

通过hash 访问,href="#!/.." 不能覆盖URL,只能在#hash之后添加东西。

其它的和html5其实是一样的。

小总结 : html5 会覆盖原路径,hash只是添加#! , html5 访问路径就像普通URL , hash 就是普通URL 加 #!

#! 在后台会被翻译成 ?key=value 的格式,这是协议,方便SEO蜘蛛。

时间: 2024-11-03 10:34:25

ngRoute 路由的相关文章

AngularJs ng-route路由详解

本篇基于ng-route来讲下路由的使用...其实主要是 $routeProvider 搭配 ng-view 实现. ng-view的实现原理,基本就是根据路由的切换,动态编译html模板. 更多内容参考:Angularjs总结 前提 首先需要在页面引入angular和angular-route,注意要在angular-route之前引入angular <script src="../../bower_components/angular/angular.js"></

Angular路由(三)

AngularJs ng-route路由详解 其实主要是$routeProvider搭配ng-view实现. ng-view的实现原理,基本就是根据路由的切换,动态编译html模板. 前提 首先必须在页面引入angular.js和angular-route,注意在angular-route之前引入angular <script type="text/javascript" src="js/angular.min.js" ></script>

ngRoute (angular-route.js) 和 ui-router (angular-ui-router.js) 模块有什么不同呢?

很多文章中都有说道:当时ngRoute在路由配置时用$routeProvider,但是当ui-router路由配置时用 $stateProvider 和 $urlRouterProvider. 那么它们有什么不同呢? 1.ngroute是用AngularJS框架的核心部分. 2.ui-router是一个社区库,它是用来提高完善ngroute路由功能的. 那么我到底用哪个,或者说,哪个更适合可管理性和适合可扩展性? ui-router路由器是一个第三方模块,功能非常强大.它支持一切正常ngrout

使用Angular和Nodejs搭建聊天室

一,利用Node搭建静态服务器 这个是这个项目的底层支撑部分.用来支持静态资源文件像html, css, gif, jpg, png, javascript, json, plain text等等静态资源的访问.这里面是有一个mime类型的文件映射. mime.js /** * mime类型的 map * @ author Cheng Liufeng * @ date 2014/8/30 * 当请求静态服务器文件的类型 html, css, gif, jpg, png, javascript,

简话Angular 03 Angular内置表达式大全

一句话: 大多数html标签属性和事件都有一个对应的ng指令 说明:这些指令和原生html最大的区别就是可以动态更新.比如一个div的样式用ng-class后,我们就可以随意应用css class. 1. 内置指令大全 ng-include 包含一个文件 ng-href ng-src 对应 href src ng-disabled ng-readonly 对应 disabled readonly ng-checked ng-selected ng-options ng-true-value ng

深究AngularJS(1)——ui-router详解

1.配置使用ui-router 1.1导入js文件 需要注意的是:必须导入angular.min.js这个文件,且angular.min.js必须导入在angular-ui-router.min.js前面. <script type="text/javascript" src="JS/angular.min.js"></script> <script type="text/javascript" src="

【MVC5】First AngularJS

※本文参照<ASP.NET MVC 5高级编程(第5版)> 1.创建Web工程 1-1.选择ASP.NET Web Application→Web API 工程名为[atTheMovie] 1-2.添加AngularJS 在Package Manager Console执行如下命令: Install-Package AngularJS.core 1-3.添加EntityFramework 在Package Manager Console执行如下命令: Install-Package Entit

angular之$on、$emit、$broadcast

1.$scope.$on view事件 //View被加载但是DOM树构建之前时: $scope.$on('$viewContentLoading', function(event, viewConfig){ ... }); //View被加载而且DOM树构建完成时: $scope.$on('$viewContentLoaded', function(event){ ... }); //路由路径发生改变时 current:要到达的路径  previous:上一个路径 $scope.$on('$l

路由模块angular-route

下载模块包cnpm install angular-route --save 导包<script src="../node_modules/angular-route/angular-route.js"></script> 基本使用项目放到wamp www目录http://localhost/automation/src/index.html# 路由功能是由 routeProvider服务 和 ng-view 搭配实现,ng-view相当于提供了页面模板的挂载点