Angular UI Router-在不了解第二级嵌套视图的情况下更改第三级嵌套视图
Angular-UI-Router - change 3rd level nested view without knowing about 2nd level nested view
我有几个"父模块",比如
- 用户
- 社区
我也有"可嵌入模块",比如
- 照片
- 视频
- wiki
我的可嵌入模块可以嵌入到父模块中。并非所有模块都具有交叉依赖关系。例如,用户不知道他有照片、视频和wiki,但知道他有一个可嵌入模块的列表,这些模块将嵌入到他的页面中。而照片、视频和维基也不知道它们会嵌入到哪里。
我有三层观点:-基本视图层(顶部导航栏、徽标等)-关心父视图(不知道是哪一个,被注入)-父对象视图层(可以是用户、社区或页面,例如保存用户照片和名称)-关心他的可嵌入视图(不知道它们是,被注入)-嵌入式视图层-关心他的视图内部的内容
现在假设我在用户页面上。用户路由为#/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')
以在全局级别上链接模块。
您对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');
- angularjs中带有ui路由器的嵌套视图
- 如何加载嵌套3个状态的UI路由器UI视图模板
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 滚动所有嵌套的滚动条,使HTML元素进入视图
- 状态更改期间角度UI路由器中的嵌套视图滞后
- 带有ui.router的带角度的嵌套视图
- Angularjs 中的嵌套视图,每个视图都有单独的控制器
- 挖空.js嵌套视图模型不起作用
- Angular UI Router-在不了解第二级嵌套视图的情况下更改第三级嵌套视图
- EmberJS linkTo嵌套资源正在重新呈现父视图
- 创建表时在marionete.js中嵌套视图
- Angular 1.3+ui路由器+生成器ng poly嵌入嵌套(?)视图不起作用
- 与AngularJs中的嵌套视图相关
- MarionetteJS嵌套视图
- 嵌套的主干视图未添加到DOM中
- 嵌套状态的多个视图
- Ember.js-隐藏嵌套资源中的父视图
- AngularJS将ui视图嵌套到ng repeat中
- 将创建视图嵌套在Backbone.js中的显示视图中
- 主干视图嵌套