簡單來說,
Abstract states
不能被調用。您無法訪問名爲/tab
的網址。即使您嘗試在地址欄上手動輸入網址,也會導致您進入blank
頁面。
當您想要有子視圖時創建抽象狀態。
例如,你有這樣的看法。
.state('tab.dash', {
url: '/dash',
views: {
'tab-dash': {
templateUrl: 'templates/tab-dash.html',
controller: 'DashCtrl'
}
}
})
我們可以看到,dash
是叫tab
父視圖,故名tab.dash
的孩子。
你會發現,當你在一個網址/tab/dash
,上述觀點被加載。但是你從來沒有在你的應用程序的任何地方定義過一個名爲/tab/dash
的網址。這是抽象工作的地方。它爲您的應用程序創建一個子URL,因此不必編寫整個URL來指定視圖。
因此,以tab.foo-bar
開頭的所有狀態都會在您的網址前加/tab
。您的網址將變成如下所示:/tab/foo-bar
當您希望將靜態模板作爲基本模板(其中加載了所有其他視圖)時,主要使用抽象狀態。它有點像你在更換網址時總是在屏幕上顯示那些tabs
。
如果你想有一個詳細的解釋,這裏有一些鏈接,可以幫助你。
- ui-router
- blog