我有几个“父模块”,让我们说
我也有“嵌入式模块”,比如说
我的可嵌入模块可以嵌入到父模块中。 所有模块都没有交叉依赖关系。例如,用户不知道他有照片,视频和维基,但知道他有可嵌入模块的列表,这些模块将嵌入到他的页面中。照片,视频和维基也不知道它们将被嵌入的位置。
我有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>
然后照片模块可以使用:parent 参数来确定其父
或者至少我需要链接功能,如:
$stateProvider.state('user.photos', /*&*/'photos')
链接全球层面的模块。
答案 0 :(得分: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');