在运行时加载 angular 模块 with/without ocLazyLoad
Load angular module at runtime with/without ocLazyLoad
我有几个模块要根据某些条件在运行时加载。目前我正在使用 ocLazyLoad 模块,但我加载的模块根本不工作。一切正常加载,没有抛出任何错误。
我首先声明我的主模块
var app = angular.module('myApp',['oc.lazyLoad'])
app.config(['$ocLazyLoadProvider',function(){
modules : [{
name : 'mod1',
files : [CDN-Path]
}]
}]);
然后在我的控制器中的某个地方
app.controller('c',function($ocLazyLoad){
$ocLazyLoad.load('mod1').then(function(){
console.log('module loaded!');
});
})
我在 resolved promise 中真正做的是我用 ui-router 注册了一个新状态,在那个状态中我使用了 mod1
中定义的一些指令,但它们只是不工作。模块加载后是否需要进一步初始化?
您可以延迟加载任何 module/directive/controller/javascript(jquery 以及 ),然后查看如下:
angular.module('app', ['ui.router', 'oc.lazyLoad']).config(['$stateProvider', '$ocLazyLoadProvider', function ($stateProvider, $ocLazyLoadProvider) {
$ocLazyLoadProvider.config({
modules : [{
name : 'TestModule',
files : ['js/TestModule.js', 'js/AppCtrl.js']
}
]
});
$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('TestModule');
}
]
}
});
}
]);
https://oclazyload.readme.io/docs/with-your-router
使用 controller
和 ui-bootstrap
延迟加载编辑 Plunker 示例: https://plnkr.co/edit/pUq3b1TDkwdGQOftcWDL?p=preview
我有几个模块要根据某些条件在运行时加载。目前我正在使用 ocLazyLoad 模块,但我加载的模块根本不工作。一切正常加载,没有抛出任何错误。
我首先声明我的主模块
var app = angular.module('myApp',['oc.lazyLoad'])
app.config(['$ocLazyLoadProvider',function(){
modules : [{
name : 'mod1',
files : [CDN-Path]
}]
}]);
然后在我的控制器中的某个地方
app.controller('c',function($ocLazyLoad){
$ocLazyLoad.load('mod1').then(function(){
console.log('module loaded!');
});
})
我在 resolved promise 中真正做的是我用 ui-router 注册了一个新状态,在那个状态中我使用了 mod1
中定义的一些指令,但它们只是不工作。模块加载后是否需要进一步初始化?
您可以延迟加载任何 module/directive/controller/javascript(jquery 以及 ),然后查看如下:
angular.module('app', ['ui.router', 'oc.lazyLoad']).config(['$stateProvider', '$ocLazyLoadProvider', function ($stateProvider, $ocLazyLoadProvider) {
$ocLazyLoadProvider.config({
modules : [{
name : 'TestModule',
files : ['js/TestModule.js', 'js/AppCtrl.js']
}
]
});
$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('TestModule');
}
]
}
});
}
]);
https://oclazyload.readme.io/docs/with-your-router
使用 controller
和 ui-bootstrap
延迟加载编辑 Plunker 示例: https://plnkr.co/edit/pUq3b1TDkwdGQOftcWDL?p=preview