使用时需要ui中用ui-view指令指定 如:

<div ui-view></div>

首先配置注册 ui-route

var mainModule = angular.module('main', ['ui.router']);

由于run方法是在angular启动的时候就会执行的,可以将路由跳转控制放到run方法中,比如某种条件下禁止路由跳转 另外全局事件也可以放到run方法中

mainModule.run(function($rootScope,$state,$http,$stateParams){
//这里把$state和$stateParams这两个对象放到$rootScope上,方便其它地方引用和注入。
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
$rootScope.$on('$stateChangeStart', function(event, toState,
toParams, fromState, fromParams) {
if (toState.name === "yxlpm") {
// 这里加入调出影响力排名页面是做出的判断
//使用jquery不使用$http是应为$http的请求是不定时的,等请求完成页面已经完成了跳转,evet事件就无效
// 如果好友公司数少于5个侧不显示页面,跳出提示
$.ajax({
method : 'POST',
url : '../userInfo/influence',
async: false,
headers : {
'token' : $rootScope.token
}
}).success(
function(resp, status, headers, config) {
if (resp.code === 8037) {
// $state.go('wo'); 路由跳转go方式
event.preventDefault();// 取消默认跳转行为
alert('您的影响力不足无法查看'); }
});
} });
})

基本路由配置

mainModule.config(function($stateProvider, $urlRouterProvider) {
// $urlRouterProvider.otherwise('../dongtai/smdt.html');
// //在配置(状态配置和when()方法)中没有找到url的任何匹配 $stateProvider.state('news', {
url : '/news/:type', // 消息 type为参数类型 取参数可用$stateParams.type
templateUrl : '../grsz/news.html'
}).state('sousuo.zrssjg', {
url : '/zrssjg/:topic', // 找人结果
templateUrl : '../sousuo/zrssjg.html'
}).state('zwxq', { //注意这边嵌套视图的写法
url : '/zwxq/:id', // 职位详情
views : {
'view1' : {
templateUrl : '../wo/zwxq.html'
},
‘view2’:{
templateUrl : '../wo/zlxq.html'
}
}
})
}); html:
//传参方式1、/news/1 反斜杆后面为参数
<a class="menu-item" href="#/news/1" hideblock>
消息
</a>
//传参方式2、topic为参数名 用.号来控制sousuo页面下的子页面
<a class="tag" ui-sref="sousuo.zrssjg({topic:ChildrenPosition.name})"</a> //指定路由
<div ui-view="view1"></div>
<div ui-view="view2"></div>

state事件

    //状态改变之前触发
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){ ... }) $rootScope.$on('$stateNotFound', function(event, unfoundState, fromState, fromParams){ ... })
//example
// somewhere, assume lazy.state has not been defined
$state.go("lazy.state", {a:1, b:2}, {inherit:false}); // somewhere else
$rootScope.$on('$stateNotFound',
function(event, unfoundState, fromState, fromParams){
console.log(unfoundState.to); // "lazy.state"
console.log(unfoundState.toParams); // {a:1, b:2}
console.log(unfoundState.options); // {inherit:false} + default options
})
//状态改变成功之后触发
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){ ... }) $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error){ ... })

view事件

    View被加载但是DOM树构建之前时: 

    $scope.$on('$viewContentLoading', function(event, viewConfig){ ... }); 

    View被加载而且DOM树构建完成时: 

    $scope.$on('$viewContentLoaded', function(event){ ... });

另一种传参方式

    $state.go('sousuo.dtssjg', {topic : $scope.keyWord}, {reload : true});
由于html中无法动态绑定ui-sref中的路径,可以在控制器中通过state来做跳转

路由中的其他配额

    templateProvider:返回HTML字符串的函数
$stateProvider.state(‘blog.detail', {
templateProvider: function ($timeout, $stateParams) {
return $timeout(function () {
return '<h1>' + $stateParams.blogID + '</h1>'
}, 100);
}
}) //以下几个项目中并没有进行配置,而是将功能分化到对控制器和指令中,具体功能也不太理解。可参照官方文档:https://github.com/angular-ui/ui-router/wiki
controller、controllerProvider:指定任何已经被注册的控制器或者一个作为控制器的函数 resolve:在路由到达前预载入一系列依赖或者数据,然后注入到控制器中。 data:数据不会被注入到控制器中,用途是从父状态传递数据到子状态。 onEnter/onExit:进入或者离开当前状态的视图时会调用这两个函数 关于angulsrjs入门介绍,可参阅这篇博文:http://www.zouyesheng.com/angular.html#toc66

ui-router的使用的更多相关文章

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

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

  2. angular : $location & $state(UI router)的关系

    次序:angular 的 location会先跑 $rootScope.$on("$locationChangeStart", function (scope, newUrl, o ...

  3. angularjs ngRoute和ui.router对比

    ngRoute模块是angularjs自带的路由模块,ui.router是一个第三方路由模块,接下来将对两者进行一个对比: ng-router(angular-router.js) ng-view n ...

  4. angular ui.router 路由传参数

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

  5. ngRoute 与ui.router区别

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

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

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

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

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

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

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

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

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

  10. angularJS ui router 多视图单独刷新问题

    场景:视图层级如下 view1 --view11 --view111 需求:view11的一个动作过后,单独刷新view12 解决方式:修改层级设计 view1 --view11 --view111 ...

随机推荐

  1. 关于.NET三层 分类: C#

    三层体系结构的概念 用户界面表示层(USL) 业务逻辑层(BLL) 数据访问层(DAL) BLL将USL与DAL隔开了,并且加入了业务规则 各层的作用 1:数据数据访问层:主要是对原始数据(数据库或者 ...

  2. linearizing the depth in vertex shader

    please refer to http://www.mvps.org/directx/articles/linear_z/linearz.htm When using a programmable ...

  3. JavaScript高级程序设计55.pdf

    输入模式 HTML5为文本字段新增了pattern属性,这个属性的值是一个正则表达式,用于匹配文本框中的值 例如,只想在允许在文本字段中输入数值 <input type="text&q ...

  4. RHEL6彻底禁用ip6的方法

    一.vi  /etc/modprobe.d/disable-ipv6.conf(名字随便起)(RHEL6.0之后没有了/etc/modprobe.conf这个文件) 输入:install ipv6 / ...

  5. 用户home目录下的.gitconfig 和 库文件夹目录下的 .gitignore 示例

    .gitconfig文件: [user] name = hzh email = @qq.com [core] editor = vi quotepath = false [merge] tool = ...

  6. hug and Compression Resistance

    Hugging => content does not want to grow Compression Resistance => content does not want to sh ...

  7. Netbeans代码配色主题大搜集

    我用netbeans的原因之一就是因为其支持代码配色主题,这是个对于一个代码配色字体控来说是非常重要的一个功能.理所当然的,我也会收集各种配色主题来时常换换口味. 下面就是我目前收集的Netbeans ...

  8. Oracle 字符集的查看和修改

    Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工具,错误消息,排序次序,日期 ...

  9. nyoj 116 士兵杀敌(二)【线段树单点更新+求和】

    士兵杀敌(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5   描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军经常 ...

  10. tensorflow 保存变量,

    代码: #!usr/bin/env python# coding:utf-8"""这个代码的作用是 通过 tensorflow 来计算 y = 0.3x + 0.1 的线 ...