我们的想法是当我们点击按钮改变ui路由器同时,我们加载使用oc.lazyLoad js文件和模板。
看下面的例子:
index.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body ng-app="app" ng-controller="AppCtrl as vm">
<button ng-click="vm.click()">Click Me</button>
<ui-view></ui-view>
<script src="bower_components/angular/angular.min.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.min.js"></script>
<script src="bower_components/oclazyload/dist/ocLazyLoad.min.js"></script>
<script src="app.js"></script>
</body>
</html>
app.js
angular.module('app',["ui.router", "oc.lazyLoad"])
.config(function($stateProvider){
$stateProvider.state('store', {
templateUrl: 'store/store.tmpl.html',
controller: 'StoreCtrl as store',
resolve: {
store: function($ocLazyLoad){
return $ocLazyLoad.load(
{
name: "store", //module name is "store"
files: ["store/store.js"]
}
)
}
}
}
)
})
.controller("AppCtrl", function($state){
var app = this;
app.click = function(){
$state.go('store');
}
})
store.js
angular.module("store", [])
.controller("StoreCtrl", function(){
var cart = this;
cart.message = "I'm a message from the controller";
})
store.tmpl.html
<div>
<h1>Here we have manyy thing to load!</h1>
{{store.message}}
</div>