使用 Angular js,我如何管理允许隐藏和显示窗口(等等)的复杂视图布局。如果将使用相同的 url-path,我需要在重新打开窗口时不丢失任何状态或范围。这就像显示一个项目列表,并在一个与其他项目平行的窗口中打开每个项目。使用角度和路线,以前的范围将被破坏。
(#/itemlist -> #/itemlist/item/1 and #/itemlist/item/2)
- 一个项目打开多个具有相同状态的组件(两个窗口;请移动它们),由角度 ui 状态管理。
- 每个状态都有自己的控制器,每个控制器都有自己的范围。
- 范围继承可以稍后在扩展原型中设计,但应该独立于视图层次结构。
- 控制器和视图将被范围销毁或如果所有视图都被销毁,控制器和范围也必须被销毁(尚未完全实现。)
- 如果调用路线并且存在范围,则相关视图将被重新激活。
这个想法是使用两个服务来管理/存储控制器,并通过范围管理关联的视图。为了隐藏两个组件的管理,使用通用控制器$stateProvider
来解决控制器/视图注入:
$stateProvider
.state({
name : 'item',
url: '/item/:id',
views:{
'genericCtrl' : {
resolve : {
views : function() { return ['TestView', 'TestView']; },
ctrl : function() { return 'TestCtrl' ; }
},
controller : 'GenericCtrl'
}
}
})
我不知道这个概念是否有效,或者角度是否有自己的方法(我还没有找到),或者是否存在另一个更好的解决方案。请写下您的想法、改进等。这应该是我们大应用程序的基本概念。