2015-09-11 21 views
0

從離子提供的樣本啓動應用程序,我們會看到這樣的事情:在離子中抽象的目的是什麼?

$stateProvider 

    // setup an abstract state for the tabs directive 
    .state('tab', { 
    url: '/tab', 
    abstract: true, 
    templateUrl: 'templates/tabs.html' 
    }) 

什麼是抽象的目的是什麼?註釋出來,這件事仍然工程....

回答

0

它,所以你可以繼承父狀態的佈局,而導航到子視圖。

ui-router docs

一種抽象狀態可以有子狀態,但不能得到激活 本身。 「抽象」狀態只是一個不能被 過渡到的狀態。當其中一個 後代被激活時,它被隱式激活。

通過設置狀態abstract,可以防止用戶轉移到該狀態的能力。

0

簡單來說,

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

如果你想有一個詳細的解釋,這裏有一些鏈接,可以幫助你。

  1. ui-router
  2. blog
相關問題