使用原生 AngularJS 1.x 是不可能的
但是,您可以使用$oclazyload 来延迟加载代码文件(js、HTML、CSS)
$ocLazyLoad 与UI-Router 等路由器完美配合。它返回一个承诺并使用resolve 属性来确保在解析视图之前加载文件。
angular.module('myApp', ['ui.router', 'oc.lazyLoad'])
.config(function($stateProvider, $urlRouterProvider, $ocLazyLoadProvider) {
$stateProvider
.state('stateA', {
url: '/stateA',
controller: 'StateACtrl',
templateUrl: 'stateA.html',
resolve: {
load: [ '$ocLazyLoad', function($ocLazyLoad) {
return $ocLazyLoad.load([
{
name: 'stateA',
files: [
'stateA.css',
'stateA.js',
],
},
]);
},
],
},
})
.state('stateB', {
url: '/stateB',
controller: 'StateBCtrl',
templateUrl: 'stateB.html',
resolve: {
load: [ '$ocLazyLoad', function($ocLazyLoad) {
return $ocLazyLoad.load([
{
name: 'stateB',
files: [
'stateB.css',
'stateB.js',
],
},
]);
},
],
},
});
});
我还创建了一个plunkr 来演示一个工作模型。
Documentation 了解更多可能的配置选项。
希望对你有帮助!