Angular ocLazyLoad 与ui-router的配合使用

1.resolve

state(配置路由时)的resolve参数:

resolve:object,将会被注入controller去执行的函数,<string,function>形式。

基于uiRouter的resolve是在加载controller和template之前所执行的一系列操作,它帮助我们初始化我们所要前往的那一个视图。只有be solved(操作完成),controller才会被实例化。因此,我们可以在resolve步骤里面加载我们所需要的controller。

$stateProvider.state(‘index‘, {
  url: "/", // root route
  views: {
    "lazyLoadView": {
      controller: ‘AppCtrl‘, // This view will use AppCtrl loaded below in the resolve
      templateUrl: ‘partials/main.html‘
    }
  },
  resolve: { // Any property in resolve should return a promise and is executed before the view is loaded
    loadMyCtrl: [‘$ocLazyLoad‘, function($ocLazyLoad) {
      // you can lazy load files for an existing module
             return $ocLazyLoad.load(‘js/AppCtrl.js‘);
    }]
  }
});


resolve中加载AppCtrl.js,但是请求都是异步的,返回的顺序不是按照顺序来的。在loadMyCtrl中需要调用AppCtrl里面的getBookById()方法。这个时候虽然在load里面已经加载AppCtl.js,但是在loadMyctl中是无法使用get()方法,所以在loadMyctl对象中,所以必须重新加载AppCtl.js。这个时候就需要$injector中的get()方法。
$stateProvider.state(‘index‘, {
  url: "/",
  resolve: {
    loadMyCtl: [‘$ocLazyLoad‘, ‘$injector‘, function($ocLazyLoad, $injector) {
      return $ocLazyLoad.load(‘js/ServiceTest.js‘).then(function() {
        var $serviceTest = $injector.get("$serviceTest");
        $serviceTest.get();
      });
    }]
  }
});
				
时间: 2024-08-26 17:34:09

Angular ocLazyLoad 与ui-router的配合使用的相关文章

angular : $location &amp; $state(UI router)的关系

次序:angular 的 location会先跑 $rootScope.$on("$locationChangeStart", function (scope, newUrl, oldUrl) { log("$locationChangeStart from " + oldUrl) log("$locationChangeStart to " + newUrl) }); 接着是 ui router $state $rootScope.$on(&q

Angularjs中UI Router全攻略

摘自:Angularjs中UI Router全攻略 温馨提示:想要了解 angular-ui-router的同学,从上往下读一遍,能带随着coding那就更好了,保证你对angular-ui-router基本全部掌握. 如何引用依赖angular-ui-router angular.module('app',["ui.router"]) .config(function($stateProvider){ $stateProvider.state(stateName, stateCofi

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

在单页面应用中要把各个分散的视图给组织起来是通过路由机制来实现的.本文主要对 AngularJS 原生的 ngRoute 路由模块和第三方路由模块 ui.router 的用法进行简单介绍,并做一个对比. ngRoute 使用方法 1) 引入 angular-route lib 无论是 ngRoute 还是 ui.router ,作为框架额外的附加功能,都必须以 模块依赖 的形式被引入. 1 <script src="lib/angular-route.js"></sc

Angularjs中UI Router用法小记录

今天自己参考已有的项目代码学习了下UI Router的用法,写了个小demo,验证了下自己的想法,现把使用情况记录一下. 1.入口文件index.html,引入项目所需的js文件,标注ng-app,创建ui-view元素,为后面的嵌套做容器准备. <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <meta charset="UTF-8">

angular 的ui.router 定义不同的state 对应相同的url

Angular UI Router: Different states with same URL? The landing page of my app has two states: home-public, home-logged-in. Now I want to show both states on the same URL, but let the controller and template depend on the user session (is the user log

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

本文转自:http://www.oschina.net/translate/angularjs-multi-step-form-using-ui-router 今天我们将使用AngularJs和伟大的UI Router以及Angular ngAnimate module创建一个带动画的多步表单.这项技术可以用在你想要简化用户操作的大表单上. 我们看到这项技术已经应用在了许多的网页上.比如购物车,注册表单,入职流程以及许多多步表单,让用户更容易在线填写表单. 下面我们将构建它: 使用UI Rout

angular+ui router+require

index.html !DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <link rel="stylesheet" href="../lib/bootstrap/css/bootstrap.min.css"></h

ui router 介绍

1. 路由规则 rap框架页面路由基于ui-router实现 1.1 ui-router 一个基本的路由状态如下所示: 路由配置: $stateProvider .state('po',{ url:'/po', abstract:false, templateUrl:'./pages/master.html', resolve:{ deps:"i am a test" }, controller:'po_controller' }) 前台界面: <div ui-view>&

ui router digest 10 time

refer : https://github.com/angular-ui/ui-router/issues/600 $urlRouterProvider.when("/", "/companys") redirect to companys 时,如果被 onStateChange 拦截并且 preventDefault() + $state.go('otherState'), otherState有使用 templateUrl 需要异步加载的话,那么就会出现这个