AngularJS模塊管理問題的非常規(guī)處理方法
1.起因
自己一直做winform,有幸從某個大神手里接了一個node.js,express,angularJS等集眾多開源框架的一個項目,趕鴨子上架,于是一邊學(xué)習(xí),一邊用自己以往的思中去整理,重構(gòu)代碼;
2.問題
在某幾個環(huán)境下,需要用BootStrap的模態(tài)框,咱是學(xué)win的么。。 自然而然的想到將boosStrp的模態(tài)框整成一個通用的東西,四處調(diào)用 。。。
于是用patial引用對話框文件,對話框本身用anglurJS進行了服務(wù)器相關(guān)的通訊 。
后來發(fā)現(xiàn),當只用一個的時候是好用的,如果多次引用 (調(diào)用不同的數(shù)據(jù))那么只有一個好使。。
3.分析
查了一些資料才明白, angular.bootstrap 這個調(diào)用在頁面上只能執(zhí)行一次,多執(zhí)行就不好用了,而我之前將所有的angular.module都寫成了單獨的JS文件中,每一個JS文件最后都調(diào)用了 angular.bootstrap 所以,自然而然的會掛掉;
4.期待
于是,想有一種解決機制,讓我可以隨意的partial各種文件到頁面中, 并且js文件之間不會重復(fù)引用 ,angulurJS也能完美執(zhí)行;
5.解決
親們——雖然這個方式有點惡心,但是絕對直接有效;
思路就是把所有的AngularJS模塊動態(tài)維護在一個全局數(shù)組,然后進行動態(tài)的加載
不說了,貼代碼
在框架頁(layout ...)head處引用 angulurinit.js文件,代碼如下:
Array.prototype.indexOf = function (val) { for( var i = 0; i < this.length; i++) { if(this[i] == val) return i; } return - 1; }; var jsModules = new Array(); function Confirm(val){ if (jsModules.indexOf(val) > -1) return; else jsModules.push(val); };
將每一個anglur.js模塊內(nèi)的
angular.bootstrap(document, [modulename]);
替換成
Confirm(modulename);
在layout(布局頁?我也不知道叫啥,反正是那個公共的框架頁)尾部加入angulur.js文件,代碼如下:
(function () {
var app = angular.module('app', jsModules);
angular.bootstrap(document, ['app']);
})();
嘿嘿~~ 我惡心了。。。 惡心到您了沒?
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
AngularJS基礎(chǔ) ng-options 指令詳解
本文主要介紹AngularJS ng-options 指令,這里對ng-options指令的知識做了詳細整理,并附有詳細的代碼示例,有需要的小伙伴可以參考下2016-08-08Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的寫法
本篇文章主要介紹了Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06