3 回答

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
思路:只要根據(jù)用戶(hù)角色 顯示該角色可以訪問(wèn)的菜單即可,在每次路由切換的時(shí)候判斷下是否有訪問(wèn)此路由的權(quán)限,沒(méi)有就跳轉(zhuǎn)到指定頁(yè)面即可。
如果要想根據(jù)角色動(dòng)態(tài)生成路由,可以在angular還沒(méi)有啟動(dòng)的時(shí)候獲取該用戶(hù)角色的所有路由(也可以說(shuō)菜單),然后循環(huán)菜單 通過(guò) ui-router動(dòng)態(tài)加入即可;
一般項(xiàng)目把所有的js和模板都打包壓縮成一個(gè)js,反而效果更好;

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
按照ui-router或者什么來(lái)配置路由,完全可以自己實(shí)現(xiàn)一個(gè)功能加載器:
$stateProvider
//動(dòng)態(tài)菜單
.state("Menu", {
url: "/menu/:code",
templateUrl: "modules/menuloader.html"
});
然后這個(gè)menuloader.html里面,只放一個(gè)ng-include,它的地址關(guān)聯(lián)到一個(gè)動(dòng)態(tài)變量,這個(gè)變量根據(jù)傳入的那個(gè)code去讀取。
在這個(gè)state的resolve里面,根據(jù)code獲取到菜單對(duì)應(yīng)的html地址,js地址,然后用動(dòng)態(tài)加載控制器的方式把js加載完成,然后把html地址賦值給上一段里提到的那個(gè)變量。
這樣,你就沒(méi)有定義多個(gè)路由,而是直接用一個(gè)路由的配置完成了所有的動(dòng)態(tài)獲取過(guò)程,菜單以后可以任意無(wú)限加,不用改任何公共代碼。
添加回答
舉報(bào)