2017-08-01 75 views
0

簡單的問題:我在工作中重構了一個大應用程序,並且在應用程序的不同部分之間找到了很多共同點,這似乎很適合嵌套路線。但是,我發現自己的巢穴越來越多。目前,比如我有一個這樣的狀態:Angularjs ui-router,當嵌套變得太多時

app.budgetAddComponent.transport.online.seleccionar

一些這種狀態僅僅是一些HTML,像app這是導航欄,或transport這是一組選項卡。

無論如何,我發現自己深陷seleccionar狀態,使用budgetAddComponent狀態的東西,我開始懷疑自己是否太過分了。

那麼,像這樣深嵌套的經驗?它太多還是僅僅是正常?

回答

1

這種狀態很好,狀態很好,不會妨礙性能,看起來很複雜。

但是,而不是減少深度,你可以有多個命名的意見,而不是所有嵌套的路線。所以,當你的某條路徑是隻喜歡導航欄或標籤模板,你可以有這樣的:

<div ui-view="navbar"></div> 
<div ui-view="tabledata"></div> 

而在子狀態的定義有這樣的:

$stateProvider  
    .state('budgetAddComponent', {   
    views: {   
     'navbar': { ... templates and/or controllers ... }, 
     'tabledata': { ... templates and/or controllers ... } 

    }  
    }) 

現在你不需要是單獨的父狀態僅用於導航欄模板。同樣在budgetAddComponent的主模板(例如,在tabledata中)有兩個UI名稱爲tabsmaintemplate的視圖。然後,您可以直接將包含兩個視圖的在線狀態作爲'選項卡',其中只有模板&其他視圖'maintemplate'同時具有html部分以及控制器。這樣就不需要單獨的狀態transport。這樣你可以減少不。當沒有這種需要時,嵌套狀態。

檢查文檔的詳細信息:https://ui-router.github.io/guide/views#multiple-named-uiviews