angularJs中ui-router的使用
学习使用angular中,ui-route是其中的一个难点,简单使用没什么问题,但涉及到多级嵌套,就感觉有茫然,查了很多资料,踩过很多坑,到目前为止也不能说对ui-route有全面了解;这里只是把填补的几个坑记录一下备忘:
1.abstract的使用:
$stateProvider
.state('shop',{
resolve:{
"shoplist":function($http){
return $http({
url:"/bookApp/data/shoplist.php",
method:"GET"
})
}
},
abstract: true,
url:"/shop",
templateUrl:"templates/shop/list.html",
controller:"ShopListController"
})
使用abstract属性有什么用,官方说明:abstract: true 表明此状态不能被显性激活,只能被子状态隐性激活。不能显性激活即不能直接通过"/shop"访问此状态路由,那不就是一条死路吗?那要你何用。等等,我们再看看后面一句:能被子状态隐性激活,貌似还能活起来,怎么让他活起来?我们再看下面的代码:
     .state('shop.main',{
         url:"/:id",
         abstract: true,
         templateUrl:"templates/shop/main2.html",
         controller:"ShopMainController"
     })
状态:"shop.main"是shop的子状态,按理论shop.main可以激活shop,我们只需要这样去访问:/shop/1,这样我们可以激活shop状态,和"shop.main"
我们暂且不着急,我再再给加上abstract属性,玩点刺激的,我们再把激活点再往后一级看下面代码:
    .state('shop.main.info',{
        url:"",
        templateUrl:"templates/shop/info.html",
        cache:'false',
        controller:"InfoController"
    })
    .state('shop.main.author',{
        url:"/author",
        template:"<div>authorauthorauthorauthorauthor</div>"
    })
    .state('shop.main.samebook',{
        url:"samebook",
        template:"<div>samebooksamebooksamebooksamebooksamebooksamebook</div>"
    })
我看状态"shop.main.info"这个状态 的url为""所以我们要激活这个状态只需要这样去访问"shop/1"所有可以做为"shop.main"的一个默认子状态。
此时模块的嵌套关系为:list.html嵌套main.html,main.html嵌套info.html。我们可以通过"shop/:id"的url激活这个三层嵌套。我们看下最终的展示效果:

不错,达到我预期的效果。
2控制器中参数的使用:
这个没什么难点,在控制器中注入"$stateParams" url参数在这个对象里可以拿得到 :
shop.controller("ShopMainController",['$scope','$stateParams','$rootScope',function($scope,$stateParams,$rootScope){
    $scope.persons = [1,2,3,4,5,6];
    $scope.good = {
        id:$stateParams.id
    }
    cfpLoadingBar.start();
}]);
3.怎么防止模板缓存
在开发过程中,模板缓存严重影响我们调试,有时候代码修改了,模板却没有任何变化。很苦恼,其他我们只需要监听下stateChangeSuccess,然后再清除$templateCache就行,这里我们采用run方法添加监听:
bookApp.run(['$rootScope','$templateCache', function ($rootScope, $templateCache) {  
  var stateChangeSuccess = $rootScope.$on('$stateChangeSuccess', stateChangeSuccess);  
  function stateChangeSuccess($rootScope) {
   $templateCache.removeAll();
 }
}]);
angularJs中ui-router的使用的更多相关文章
- AngularJS 使用 UI Router 实现表单向导
		
Today we will be using AngularJS and the great UI Router and the Angular ngAnimate module to create ...
 - [转]AngularJS 使用 UI Router 实现表单向导
		
本文转自:http://www.oschina.net/translate/angularjs-multi-step-form-using-ui-router 今天我们将使用AngularJs和伟大的 ...
 - angularjs中的路由介绍详解 ui-route(转)
		
http://www.cnblogs.com/littlemonk/p/5500801.html 这篇文章主要介绍了Angularjs中UI Router全攻略,涉及到angularjs ui rou ...
 - angularjs中的路由介绍详解  ui-route
		
这篇文章主要介绍了Angularjs中UI Router全攻略,涉及到angularjs ui router的基本用法,需要的朋友参考下吧 首先给大家介绍angular-ui-router的基本用 ...
 - [转]AngularJS+UI Router(1) 多步表单
		
本文转自:https://www.zybuluo.com/dreamapplehappy/note/54448 多步表单的实现 在线demo演示地址https://rawgit.com/dream ...
 - angularjs ngRoute和ui.router对比
		
ngRoute模块是angularjs自带的路由模块,ui.router是一个第三方路由模块,接下来将对两者进行一个对比: ng-router(angular-router.js) ng-view n ...
 - angularJS ui router 多视图单独刷新问题
		
场景:视图层级如下 view1 --view11 --view111 需求:view11的一个动作过后,单独刷新view12 解决方式:修改层级设计 view1 --view11 --view111 ...
 - angularJS中的ui-router和ng-grid模块
		
关于angular的教程,学习了一下angular的ui-router和ng-grid这两个模块,顺便模仿着做了一个小小的东西. 代码已经上传到github上,地址在这里https://github. ...
 - 关于AngularJs中的路由学习总结
		
AngularJs中的路由,应用比较广泛,主要是允许我们通过不同的url访问不同的内容,可实现多视图的单页web应用.下面看看具体怎么使用. 关于路由 通常我们的URL形式为http://jtjds ...
 - Angularjs中的嵌套路由ui-router
		
先看看ng-router和ui-router的区别 (1)ng-route的局限性:一个页面无法嵌套多个视图,也就是说一个页面只能有包含一个页面一个控制器的切换. (2)ui-route的改进:在具 ...
 
随机推荐
- Oracle- 查询误删数据
			
使用flashback table能恢复误删数据. flashback table CONTAINER_CONTENT to timestamp to_timestamp('2010-06-30 22 ...
 - JS 函数调用
			
Js函数调用的方式有如下几种情况: (1)具名函数直接调用 function foo() { } foo(); (2)匿名函数通过引用来调用 fooRef = function() { } fooRe ...
 - springMVC get请求及其请求地址写法
			
今天,需要写一个接口,写完之后,测试的时候发线一直报404错误,不知道为什么报错.应该是get请求地址的问题,get请求有两个参数,改为一个参数的时候是好用的,可能那种方式不适合写两个参数的get请求 ...
 - Windows内核之进程基本含义以及进程的创建
			
进程 1 进程的含义: 1.1 一个是操作系统用来管理进程的内核对象. 内核对象也是系统用来存放关于进程的统计信息的地方. 1.2 还有一个是地址空间,它包括全部可运行模块或DL L 模块的代 ...
 - 操作BLOB、CLOB、BFILE
			
BFILE 二进制文件,存储在数据库外的操作系统文件,只读的.把此文件当二进制处理. BLOB 二进制大对象.存储在数据库里的大对象,一般是图像声音等文件. CLOB ...
 - UVA - 10883 Supermean
			
Description Problem F Supermean Time Limit: 2 second "I have not failed. I've just found 10,000 ...
 - yum、RPM常用的命令(转)
			
# yum install xxx 安装xxx软件# yum info xxx 查看xxx软件的信息# yum remove xxx ...
 - java_Cookies_1_商品浏览历史记录servlet1
			
public class CookiesServlet1 extends HttpServlet { public void doGet(HttpServletRequest request, Htt ...
 - Input
			
Input Basic Input Old Input Files Please note that both Input and Request do NOT sanitize your data, ...
 - python--字典工厂函数dict()
			
dic = {"name" : "wangmo" ,"age" : 18} #dic.clear() #清空字典 print(dic) #{ ...