Angularjs中UI Router的使用方法  更新时间:2016年05月14日 09:38:46   作者:ITperson   这篇文章主要为大家详细介绍了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:”authorauthorauthorauthorauthor” }) .state(‘shop.main.samebook’,{ url:”samebook”, template:”samebooksamebooksamebooksamebooksamebooksamebook” }) 我看状态”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中router的使用指南 Angular2学习笔记——详解路由器模型(Router) 详解angular2实现ng2-router 路由和嵌套路由 angular基于路由控制ui-router实现系统权限控制 AngularJS ui-router (嵌套路由)实例 详解angular笔记路由之angular-router Angularjs UI Router 相关文章 AngularJS模块学习之Anchor Scroll 这篇文章主要介绍了AngularJS模块学习之Anchor Scroll 的相关资料,需要的朋友可以参考下 2016-01-01 实例剖析AngularJS框架中数据的双向绑定运用 这篇文章主要介绍了AngularJS框架中数据的双向绑定运用实例,包括数据绑定中的关键函数与监听器触发的相关讲解,需要的朋友可以参考下 2016-03-03 angularJS中$apply()方法详解 这篇文章主要介绍了angularJS中$apply()方法详解,需要的朋友可以参考下 2015-01-01 angular内容投影详解 这篇文章主要为大家介绍了angular内容投影,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助 2021-12-12 对angular 实时更新模板视图的方法$apply详解 今天小编就为大家分享一篇对angular 实时更新模板视图的方法$apply详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 2018-10-10 angular 实现同步验证器跨字段验证的方法 几乎每个web应用都会用到表单,那么验证器就是必不可少的东西,这篇文章主要介绍了angular 实现同步验证器跨字段验证的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2019-04-04 AngularJS实现的锚点楼层跳转功能示例 这篇文章主要介绍了AngularJS实现的锚点楼层跳转功能,涉及AngularJS事件响应实现锚点跳转功能的相关操作技巧,需要的朋友可以参考下 2018-01-01 AngularJS的Filter的示例详解 本文通过示例给大家详解angularjs 的filter知识,非常不错,具有参考借鉴价值,需要的朋友参考下吧 2017-03-03 AngularJS监听路由的变化示例代码 这篇文章给大家分享了如何利用AngularJS监听路由的变化,文中给出了示例代码相信对大家的理解很有帮助,有需要的朋友们可以参考借鉴。 2016-09-09 Angularjs全局变量被作用域监听的正确姿势 这篇文章主要介绍了Angularjs全局变量被作用域监听的正确姿势的相关资料,需要的朋友可以参考下 2016-02-02 最新评论

学习使用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中router的使用指南
  • Angular2学习笔记——详解路由器模型(Router)
  • 详解angular2实现ng2-router 路由和嵌套路由
  • angular基于路由控制ui-router实现系统权限控制
  • AngularJS ui-router (嵌套路由)实例
  • 详解angular笔记路由之angular-router
张贴在3