angularUI 在不断发展过程中已经被划分成了几个模块,你可以选择你需要的模块载入,我们今天要了解一下路由控制器 ui-router ,它就是angularUI划分出出来的一个独立模块.

此模块只关注状态,在整个用户界面导航中,一个状态对应一个视图,开发者可以根据URL状态来组织控制界面UI渲染.

这里和后端开发有一点点区别需要注意:

后端: 以node.js使用express框架的web开发为例,当我们定位一个路由,对应的会去服务端请求相应资源,服务器端接收请求,解析路由,然后做一系列逻辑处理,最后指定一个视图返回客户端.

url —> 路由  —> 逻辑处理  —> 替换视图 —> 返回客户端 —> 呈现

angular:浏览器定位一个路由,ui-router会触发状态改变,状态改变加载对应的视图,视图通过ng-controller 指令找到对应的controller控制器,然后控制器处理各种业务逻辑,然后根据指令把模型加载绑定到视图,最后在浏览器呈现.

url —> 路由状态改变 —> 加载指定视图 —> 找到controller控制器  —> 处理逻辑  —>  模型根据指令绑定视图  —>  呈现

该模块提供了视图嵌套的功能,同一个页面使用多个视图,让多个视图控制某个视图等复杂web应用.

你可以去github下载指定版本:https://github.com/angular-ui/ui-router

或者也可以通过 bower 来安装前端包,关于 bower 前端包管理器使用回头我们可以单独分享.

zhangzhi@moke:~/code/work/Client/vender$ bower install angular-ui-router —save

它会把新版本下载到你当前所在目录下面.(当前最新版是 0.2.13 )

页面使用的时候直接引用:

<script src="./vender/angular-ui-router-0.2.13.js"></script>

之前介绍了几个常用模块,而今天学习的 ui-router 是我们在整个应用中全局必须用到的.所以我们可以把它注册在 module.config 方法中.

我们在Client 根目录下新建了main.js 文件,用来加载 module.config 方法.

angular.module('YIJIEBUYI', ['ui.router'])
.config(['$locationProvider', '$urlRouterProvider', function($locationProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise("/blog/index");
}]);

以后我们用到的常用全局模块会陆续放到此函数注册,目前只需要 ui-router 模块.

接着在routes 目录中创建一个路由配置文件 blog.js

angular.module('YIJIEBUYI').config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){
$urlRouterProvider
.when('/blog','/blog/index')
.otherwise('/blog/index'); $stateProvider.state('blog',{
    url:'/blog',
    views:{
        'container':{templateUrl:'templates/blog/layout.html'}
    }
}).state('blog.index',{
    url:'/blog/index',
    views:{
        'container':{templaterUrl:'templates/blog/index.html'}
    }
    })
}]);

因为main.js 中我们已经注册 ui-router 模块,所以我们上面配置的路由文件中,注入了 $stateProvider,$urlRouterProvider 2个服务.angular.js 的服务注入机制会根据参数名称自动去已经定义的服务列表里查询并注入.

上面的路由定义中有 $urlRouterProvider,此服务主要是设置默认otherwise 路由.

路由定义全部由 $stateProvider 服务来提供,state 支持多层嵌套,子类继承父类的特性,下一篇我们主要分享一下 stateProvider 内容.

ui-router路由控制器(一)的更多相关文章

  1. angular ui.router 路由传参数

    angular已经用了一段时间了,最近在做路由,做一下笔记. 路由跳转的时候进行穿参 ui.router方式 <a ui-sref="edit({id:5})"> 编辑 ...

  2. Angularjs ui router,路由嵌套 父controller执行问题

    解决方式来源:https://stackoverflow.com/questions/25316591/angularjs-ui-router-state-reload-child-state-onl ...

  3. 【原创】ui.router源码解析

    Angular系列文章之angular路由 路由(route),几乎所有的MVC(VM)框架都应该具有的特性,因为它是前端构建单页面应用(SPA)必不可少的组成部分. 那么,对于angular而言,它 ...

  4. ngRoute 与ui.router区别

    angular路由 路由 (route) ,几乎所有的 MVC(VM) 框架都应该具有的特性,因为它是前端构建单页面应用 (SPA) 必不可少的组成部分. 那么,对于 angular 而言,它自然也有 ...

  5. AngularJS 使用 UI Router 实现表单向导

    Today we will be using AngularJS and the great UI Router and the Angular ngAnimate module to create ...

  6. [转]AngularJS 使用 UI Router 实现表单向导

    本文转自:http://www.oschina.net/translate/angularjs-multi-step-form-using-ui-router 今天我们将使用AngularJs和伟大的 ...

  7. [转]AngularJS+UI Router(1) 多步表单

    本文转自:https://www.zybuluo.com/dreamapplehappy/note/54448 多步表单的实现   在线demo演示地址https://rawgit.com/dream ...

  8. 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI

    一.Vue Router路由 二.Vuex状态管理 三.Element-UI Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是 Mint U ...

  9. ngRoute 和 ui.router 的使用方法和区别

    在单页面应用中要把各个分散的视图给组织起来是通过路由机制来实现的.本文主要对 AngularJS 原生的 ngRoute 路由模块和第三方路由模块 ui.router 的用法进行简单介绍,并做一个对比 ...

随机推荐

  1. Java 吸血鬼数字

    非常羞愧(事实上没什么羞愧.水平就这样).搞了半晌才写出来了一个Java 版求四位吸血鬼数字的方法 吸血鬼数字是指位数为偶数的数字.能够由一对数字相乘而得到.而这对数字各包括乘积的一半位数的数字,当中 ...

  2. 简单分页查询(web基础学习笔记十三)

    一.建立资源文件和工具类 1.1 .database.properties jdbc.driver_class=oracle.jdbc.driver.OracleDriver jdbc.connect ...

  3. Linux虚拟机下使用USB转串口线——配置minicom、以及screen的使用

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_637212.HTM 环境:Windows XP + (VMware Workstation - Linux) 1.确保 ...

  4. Python3.2官方文档翻译--标准库概览(一)

    7.1 操作系统接口 Os模块提供主要很多与操作系统交互的函数. >>> import os >>> os.getcwd() # Return the curren ...

  5. Linux内核结构体--kfifo 环状缓冲区

    转载链接:http://blog.csdn.net/yusiguyuan/article/details/41985907 1.前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由L ...

  6. 解决 Maven was cached in the local repository, resolution will not be reattempted until the update interv

    问题原因 Maven默认会使用本地缓存的库来编译工程,对于上次下载失败的库,maven会在~/.m2/repository/<group>/<artifact>/<ver ...

  7. eclipse Failed to load the JNIshared library

      eclipse Failed to load the JNIshared library CreateTime--2018年4月22日22:08:35 Author:Marydon 1.情景再现 ...

  8. ios开发之公交卡系统的设计与实现

    // // main.m // Bus-公交 /* 公交一卡通充值系统.有两种功能选择.第一种投入硬币或者纸币 选择购票,另外一种一卡通充值,充值面额是20,50.100 */ #import < ...

  9. Java 爬虫(获取指定页面中所有的邮箱地址)

    import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.In ...

  10. 打开Activity时,不自动显示(弹出)虚拟键盘

    打开Activity时,不自动显示(弹出)虚拟键盘 在AndroidManifest.xml文件中<activity>标签中添加属性 android:windowSoftInputMode ...