2015-03-19 56 views
1

我在觀看ui-router上的視頻,演講者(蒂姆金德伯格)提到$stateChangeNotFound對懶惰狀態定義很有用。他是什麼意思,在什麼情況下會被使用?

我假設它與術語懶加載相關,我理解它。 AngularJS/ui-router新手,並提前感謝任何幫助。

回答

1

延遲加載指在運行時即時加載代碼。在這種情況下,它意味着只有當用戶嘗試導航到狀態(尚不存在)時纔可能創建/定義狀態。

例如:

  • 存在這些狀態,因爲他們已經在配置時被宣佈

    1. a: { url: '/a' }
    2. b: { url: '/b' }
  • 用戶點擊一個鏈接到/c

  • $stateNotFound事件針對根範圍燒製
  • 應用程序監聽$stateNotFound事件
  • 應用程序加載狀態定義(從服務器等),用於一個新的狀態c: { url: '/c' }
  • 一旦狀態定義是延遲裝入時,應用程序然後手動重新觸發ui-router以同步url'/ c'和ui-router路由到現在新創建的狀態c

看看UI-Router Extras Future States爲實現這種模式。

+0

真棒,超清晰的答覆謝謝你。動態創建它的好處是什麼,而不是在路由中聲明該狀態? – theartofbeing 2015-03-23 03:22:58

+0

根據應用程序的大小,延遲加載可以通過僅加載必要的內容來提高性能。您也可以根據權限在運行時交換可用狀態。 – 2015-03-23 04:22:33