2013-12-18 57 views
0

我已經幾個「主模塊」,可以說角-UI-路由器 - 改變3級嵌套視圖不知道有關2級嵌套視圖

  • 用戶
  • 社區

我也有 「embedable模塊」,可以說

  • 照片
  • 韋迪OS
  • 維基

我embedable模塊可以嵌入到主模塊。 所有模塊沒有交叉依賴關係。例如,用戶不知道他擁有照片,視頻和wiki,但知道他擁有可嵌入其頁面的可嵌入模塊列表。而且照片,視頻和wiki也不知道它們將被嵌入到哪裏。我有3層視圖: - 基本視圖層(頂部導航欄,徽標等) - 關心父視圖(不知道哪一個被注入) - 父對象視圖圖層(可以是用戶,社區或頁面,例如持有用戶照片和名稱) - 關心他的可嵌入式視圖(不知道他們是否被注入) - 可嵌入視圖圖層 - 關注他的視圖中的內容

現在讓我們說我在用戶頁面上。用戶路線是#/user。現在我想通過鏈接訪問用戶的照片,例如<a href="#/user/photos/">user photos</a>,但我不能這樣做,因爲在照片模塊中路由名稱是#/photos,所以#/user/photos/不起作用。

如果我只訪問<a href="#/photos">user photos</a>,它將刪除父視圖(父對象視圖圖層,例如將從屏幕上刪除用戶照片和名稱)。

任何想法如何訪問照片模塊和堅持父視圖,並不創建硬編碼的依賴關係的方式?

我需要的是這樣的:

$stateProvider 
    .state(':parent/photos', { 
      url: ':parent/photos', 
      templateUrl: 'modules/photos/index.html', 
      controller: 'PhotosCtrl' 
     }) 

,並用它從用戶頁面像 <a href="#/user/photos">user photos</a> 或使用它從社區頁面像 <a href="#/community/photos">community photos</a>

然後照片模塊可以使用:父 param來確定它的父親

或至少我需要鏈接功能先進而精湛,如:

$stateProvider.state('user.photos', /*&*/'photos')

對全球鏈接模塊。

+0

你能列出你在stateProvider中的所有狀態嗎?是否有'用戶'狀態和'社區'狀態? – TheSharpieOne

+0

@TheSharpieOne,檢查此:https://gist.github.com/PLEEROCK/0d60243a6a0837cbb26f – pleerock

回答

0

你對GalleryStateFactory的想法是合理的......但是我建議你將它作爲提供者來添加......這將允許它取決於$ stateProvide,你可以這樣做:

mod.provider('$galleryState', ['$stateProvider', function(sp) { 

    this.galleryStates = function(parent) { 
    sp.state(parent+'.gallery', GalleryStateFactory.default) 
     .state(parent+'.gallery.photos', GalleryStateFactory.photos) 
     .state(parent+'.gallery.albums',GalleryStateFactory.albums); 
    } 


    this.$get = angular.noop; //unless you wan't some service as well... 
}] 

$galleryStateProvider 
    .galleryStates('user') 
    .galleryStates('community'); 
+0

不錯!但我最後的實現是使用我自定義的'StateHolder'服務來註冊,管理和處理所有狀態。覆蓋/預先考慮/附加狀態是類的可用方法 – pleerock

+1

您應該在解決方案中添加一個答案,然後接受該答案,以便此Q可以關閉;) – Jens