Angular - - ngRoute Angular自带的路由

ngRoute

$routeProvider

配置路由的时候使用。

方法

when(path,route);

在$route服务里添加一个新的路由。

path:该路由的路径。

route:路由映射信息。

controller:字符串或函数,指定控制器。

controllerAs:一个用于控制器的标识符名称。。

template:字符串或函数,html模板。

templateUrl:字符串或函数,html模板的地址。

resolve:对象,一个应该注入控制器的可选的映射依赖关系。如果任何一个依赖关系是承诺,则路由将等该承诺被解决/拒绝后才实例化控制器。

redirecTo:字符串或者函数,URL重定向。

otherwise(params);

设置在没有其他路由定义被匹配时,将使用的默认路由。

ngView

路由配置的页面在HTML的view里的显示的视图区域。

$route

用于在js里对路由的操作。

依赖:$location   $routeProvider

方法

reload();

使路由服务重新加载当前路由,即使路由没有改变。

updateParams(newParams);

操作路由服务更新当前的URL,使用newParams里指定的路由参数指定当前路由参数。

newParams:将URL参数名称映射到value。

事件

$routeChangeStart
URL路由开始变化(未跳转成功)的时候触发的事件。
event:合成的事件对象。
next:将跳转的route信息。
current:当前route信息。
$routeChangeSuccess
URL路由变化成功的时候触发的事件。
event:合成的事件对象。
current:当前route信息。
previous:上一个route信息。
$routeChangeError
URL路由变化失败的时候触发的事件。
event:合成的事件对象。
current:当前route信息。
previous:上一个route信息。
rejection:拒绝承诺,通常是失败承诺的错误。
$routeUpdate
当承诺被拒绝时广播。
event:合成的事件对象。
current:当前route信息。
$routeParams
$routeParams服务运行检索当前路由的参数集。

ngRoute使用代码:

  <div ng-app="Demo" ng-controller="testCtrl as ctrl">
      <a href="#/index/page1">page1</a> - <a href="#/index/page2">page2</a> - <a href="lavascript:void(0)" ng-click="ctrl.reload()">reload</a> - <a href="lavascript:void(0)" ng-click="ctrl.update()">update</a>
      <div ng-view></div>
      <script type="text/ng-template" id="page1.tpl">
          this is page1.{{fisrtCtrl.value}}
      </script>
      <script type="text/ng-template" id="page2.tpl">
          this is page2.{{secondCtrl.value}}
      </script>
   </div>

  (function () {
      angular.module("Demo", ["ngRoute"])
      .config(["$routeProvider",routeConfig])
      .controller("testCtrl", ["$route","$scope",testCtrl])
      .controller("firstPageCtrl",firstPageCtrl)
      .controller("secondPageCtrl",secondPageCtrl);
      function routeConfig($routeProvider){
          $routeProvider.otherwise("/index/page1");
          $routeProvider
          .when("/index/page1",{
            templateUrl:"page1.tpl",
            controller:"firstPageCtrl",
            controllerAs:"fisrtCtrl"
          })
          .when("/index/page2",{
            templateUrl:"page2.tpl",
            controller:"secondPageCtrl",
            controllerAs:"secondCtrl"
          });
      };
      function testCtrl($route,$scope) {
          var vm = this;
          vm.reload = function(){
              $route.reload();
          };
          vm.update = function(){
              $route.updateParams({name:"beast"});
          };
          $scope.$on("$routeChangeStart",function(event,nextRoute,currentRoute){
              //event.preventDefault();  //可控制不跳转页面,主要在路由权限控制的时候用的多
              console.log(nextRoute,currentRoute);// 下一个路由信息和上一个路由信息
          });
      };
      function firstPageCtrl(){
          var vm = this;
          vm.value = "hello world";
          console.log("this is page1");//用于证明reload
      }
      function secondPageCtrl(){
          var vm = this;
          vm.value = "Hello World";
          console.log("this is page2");//用于证明reload
      }
  }());

这里直接使用了ng-template把两个模板写在一个页面,在实际使用中,可以把两个模板分开分别放到两个不同的html文件中,并且放到一个规定的文件中,这样可方便于管理。

时间: 2024-10-27 09:00:07

Angular - - ngRoute Angular自带的路由的相关文章

angular.isArray,angular.isDate,angular.isDefined,angular.isElement,angular.isFunction,angular.isNumber,angular.isObject,angular.isString,angular.isUndefined

//angular.isArray是否是数组console.log(angular.isArray([])); //trueconsole.log(angular.isArray([1,2,1,3])); //true//angular.isDate是否是日期console.log(angular.isDate('2012-12-02')); //falseconsole.log(angular.isDate(new Date)); //true//angular.isDefined引用对象是否

野兽的Angular Api 学习、翻译及理解 - - ngRoute Angular自带的路由

野兽的ng api学习 -- ngRoute ngRoute $routeProvider 配置路由的时候使用. 方法: when(path,route); 在$route服务里添加一个新的路由. path:该路由的路径. route:路由映射信息. controller:字符串或函数,指定控制器. controllerAs:一个用于控制器的标识符名称.. template:字符串或函数,html模板. templateUrl:字符串或函数,html模板的地址. resolve:对象,一个可选的

angular ngRoute小例子

ngRoute学习小例子 单页面应用中可以使用ng-view,当修改ng-view的template时可以实现一个页面html中展示不同内容(div部分). 例如index.html中包含ng-view 1 <!DOCTYPE HTML> 2 <html ng-app="app"> 3 <head> 4 <script src="./bower_components/angular/angular.js"></s

Angular+Bootstrap实现分页(带省略号)

前言 前几天用Angularjs写一个后台管理界面时,需要写分页,自己懒得写于是想在网上搜索一个带省略号的插件,竟然没找到,那没办法就自己写吧 效果图 话不多说,直接上代码 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <link rel="stylesheet" href=

简话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

简话Angular 07 Angular config-run-service-factory-provider-constant-value

一句话: 它们Angular框架声明周期的各个阶段,常规约定各专注于特定功能,经过处理也可以互相替换 1.功能细分简解 config Angular module模块的加载阶段-应用在此时还没有启动 run Angular应用是第一个被运行的方法,相当于其它语言中的main()方法 factory factory() 方法是创建和配置服务的最快捷方式,单例对象,在应用的生命周期内只会被调用一次注入factory,相当于注入factory定义时的函数调用入口.用 Factory 就是创建一个对象,

1.Angular框架-angular介绍与基本使用,MVC模式介绍

1.1. AngularJS概述 1.1.1. 介绍 简称:ng Angular是一个MVC框架 AngularJS 诞生于2009年,由 Misko Hevery 等人创建,后为Google所收购. 是一款优秀的前端JS框架,已经被用于Google的多款产品当中. AngularJS有着诸多特性,最为核心的是: MVC.模块化(编程).自动化双向数据绑定.语义化标签.指令.依赖注入等等. 其他前端框架: VueJS . Avalon . React . BackBone . KnockoutJ

简话Angular 02 Angular控制器-作用域嵌套

1. html代码 <div ng-controller="ParentController"> <h3><strong>父控制器</strong></h3> <label>姓名: </label> <input type="text" ng-model='person.name'> <label>年龄: </label> {{person.age

[Angular 2] Angular 2 Smart Components vs Presentation Components

Both Smart Components and Presentation Components receive data from Services in entirely different ways. Smart Components use constructor injection to lookup the entire service from the injector while Angular 2 Presentation components take the data f