1

使用 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'
        }
    }
})

看这个小提琴例子

我不知道这个概念是否有效,或者角度是否有自己的方法(我还没有找到),或者是否存在另一个更好的解决方案。请写下您的想法、改进等。这应该是我们大应用程序的基本概念。

4

0 回答 0