![](/img/trans.png)
[英]External scripts do not load after routing to another component in Angular application
[英]Load external scripts after Angular view loaded
我通过ui-router加载角度视图
...
.state('app.page.search', {
url: '/search',
templateUrl: 'tpl/page_search.html'
})
我随机遇到XXX is not a function
,
在准备好Angular视图后,如何确定外部文件已加载?
<div data-ng-include="'tpl/header.html'"></div>
<div class="content-container no-padding">
<div class="container-full">
<!-- <div data-ng-include="'tpl/search.html'"></div> -->
<div class="app-content-body fade-in-up" ui-view></div>
</div>
</div>
<div data-ng-include="'tpl/footer.html'"></div>
<DOM>
....
<DOM>
<script type='text/javascript' src='js/scriptA.js'></script>
<script type='text/javascript' src='js/scriptB.js'></script>
如@Daniel Higueras所建议,请使用UI路由器的解决方案来等待资产加载
.state('state', {
url: '/state',
templateUrl: 'url/state.html',
resolve: {
asset1: function($http) {
return $http.get();
},
asset2: function($http) {
return $http.get();
}
}
}
如果要在完成所有操作后加载资产,则可以使用ocLazyLoad服务: https ://oclazyload.readme.io/docs/oclazyload-service
只需在您的控制器中使用它即可:
app.controller('ctrl', function($ocLazyLoad) {
$ocLazyLoad.load('asset1.js').then(
function(res) {
// asset 1 is available
}
);
$ocLazyLoad.load('asset2.js').then(
function(res) {
// asset 2 is available
}
);
});
当您拥有大型资产(例如D3
时,这很有用,因为只有您应用的一页使用它,因此您不想每次加载应用时都将其拉入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.