AngularJS延遲加載html template
當使用AngularJs中的routes/views模式建立大型網(wǎng)站或者應用的時候,把所有的自定義文件,如controllers和template等在初始化時全部加載進來,不是一個好的辦法。最好的方式是,初始化時僅僅加載所需要的文件。這些文件可能會依賴一個連接或者多個文件,然而它們僅僅被特定的route所使用。當我們切換route時,未被加載的文件將會按需加載。這不但能提高初始化頁面的速度,而且可以防止帶寬浪費。
網(wǎng)上大部分文章都在講通過$routeProvider以及第三方服務對controller的延遲加載,譬如:按需加載 AngularJS 的 Controller 就講解的很詳細。但是,很少有關于用$stateProvider對controller、html/template的延遲加載的文章。盡管對查看了$stateProvider相關的很多源代碼,雖然解決了html/template的延遲加載問題,但是依然沒有解決controller的延遲加載問題, 遺憾。由于時間問題,先將調(diào)查結(jié)果整理一下,等以后繼續(xù)調(diào)查。
關于html/template的延遲加載,需要將html文件與home page文件放置于不同目錄,否則會被自動加載進去。同樣,也不能用templateUrl進行文件指定,否則也會被自動加載進去。 $stateProvider.state 的 template屬性支持字符串值和函數(shù),所以可以定義一個函數(shù)進行html文件的加載并緩存,防止重復加載文件。本想controller做同樣處理,可惜報找不到controller函數(shù)定義,嘗試很多方法都無效,等以后研究源代碼看看漏掉了什么。直接上代碼,邏輯不復雜,就不多啰嗦了。
// 記錄加載過的html以及controller,防止重復網(wǎng)絡加載
$ionic.files = {html: {}, controller: {}};
// 聲明延遲加載html方法
$ionic.getHtml = function getHtml(name) {
if (!$ionic.files.html[name]) {
// 同步ajax請求加載html,并緩存
$ionic.files.html[name] = jQuery.ajax({url: 'views/' + name + ".html", async: false}).responseText;
}
return $ionic.files.html[name];
}
// 聲明延遲加載js方法 function resolveController(name) {
// var fn = $.getScript('assets/controller/' + name + '.js');
jQuery.ajax({"url": 'assets/controller/' + name + '.js', "dataType": "script", "async": false});
// console.log("load " + name);
return name;
}
$stateProvider.state('login', {
url : "/login",
controller : resolveController("loginController"),
template : function() { return $ionic.getHtml("login"); }
});
以上所述是小編給大家介紹的AngularJS延遲加載html template的全部敘述,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
AngularJS與BootStrap模仿百度分頁的示例代碼
分頁在很多時候都能用到,這篇文章主要介紹了AngularJS與BootStrap模仿百度分頁的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
深入理解AngularJS中的ng-bind-html指令和$sce服務
這篇文章給大家詳細介紹了AngularJS中的ng-bind-html指令和$sce服務,對大家學習AngularJS具有一定參考借鑒價值,有需要都可以參考學習。2016-09-09
Angular2管道Pipe及自定義管道格式數(shù)據(jù)用法實例分析
這篇文章主要介紹了Angular2管道Pipe及自定義管道格式數(shù)據(jù)用法,結(jié)合實例形式詳細分析了Angular2管道與純管道相關概念、語法及使用技巧,需要的朋友可以參考下2017-11-11
AngularJS ng-bind 指令簡單實現(xiàn)
本文主要介紹AngularJS ng-bind 指令,在這里對ng-bind 指令做了詳細資料整理并講解,提供了實例代碼以便大家參考,有需要的小伙伴可以參考下2016-07-07
Angular 4根據(jù)組件名稱動態(tài)創(chuàng)建出組件的方法教程
組件是我們在學習angular中必不可少的一部分,下面這篇文章主要給大家介紹了關于Angular 4如何根據(jù)組件名稱動態(tài)創(chuàng)建出組件的相關資料,文中通過圖文與示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-11-11
利用require.js與angular搭建spa應用的方法實例
這篇文章主要給大家介紹了關于利用require.js與angular搭建spa應用的方法實例,文中通過示例代碼給大家介紹的非常詳細,對大家的理解和學習具有一定的參考學習價值,需要的朋友們下面跟著小編來一起看看吧。2017-07-07
用WebStorm進行Angularjs 2開發(fā)(環(huán)境篇:Windows 10,Angular-cli方式)
這篇文章主要介紹了用WebStorm進行Angularjs 2開發(fā)(環(huán)境篇:Windows 10,Angular-cli方式),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12

