【问题标题】:Ember.js Router App Architecture -- How to have multiple nested view/controller pairsEmber.js 路由器应用架构——如何拥有多个嵌套的视图/控制器对
【发布时间】:2012-10-01 06:04:45
【问题描述】:

我有一个 ember 应用程序,插座和连接插座的概念很好,我明白了。我不明白的是如何在没有疯狂嵌套的情况下在另一个视图/控制器视图中拥有多个视图/控制器视图

假设我正在设计具有电子邮件功能和照片库功能的 icloud 克隆。现在,如果我想完成类似的事情

***********************************************************
* INBOX LIST     **  COMPOSE OR VIEW MESSAGE              *
*                **                                       *
*                **                                       *
*                **                                       *
*                **                                       *
* CONTACTS LIST  **                                       *
*                **                                       *
*                **                                       *
*                **                                       *
*                **                                       *
***********************************************************

我想设计这个的方式是这样的

EmailController/View
|-- SplitViewController/View
   |-- InboxListController/View
   |-- ContactsListController/View
   |-- ComposeMessageController/View
   |-- ReadMessageController/View

我可以将它们热交换到 SplitView 的级别或将它们全部删除,但我没有看到只允许一个 outlet 的好方法。它会迫使我在不应该嵌套的事物中进行下一步。使用单出口方法,我的结构看起来更像

EmailController/View
|-- SplitViewController/View
   |-- InboxListController/View
       |-- ContactsListController/View
           |-- ComposeMessageController/View
               |-- ReadMessageController/View

如何找到适合 Ember.js/Router 且仍允许更复杂嵌套的架构风格?

【问题讨论】:

    标签: javascript architecture ember.js ember-old-router


    【解决方案1】:

    你知道你可以命名网点吗?例如,在 SplitView 模板中,您可以有一个 {{outlet inboxListView}}、一个 {{outlet contactsListView}} 等...当您执行 connectOutlets 时,您可以这样做:

    splitViewController.connectOutlet({name: 'inboxList', outletName: 'inboxListView'})
    splitViewController.connectOutlet({name: 'contactsList', outletName: 'contactsListView'})
    

    等等……

    【讨论】:

    • 那么,如果你在 SplitView 中为不同的视图/模型对象使用不同的命名出口,你的路由器会是什么样子用数据填充嵌套出口? splitViewController.connectOutlet({name: 'inboxList', outletName: 'inboxList'}, router.get('store').findAll(App.Inbox))) 和 splitViewController.connectOutlet({name: 'contactsList', outletName: '联系人列表'}, router.get('store').findAll(App.Contact))) ?
    • smth like this yes,但必须将上下文放入哈希中。 {name: 'contactsList', outletName: 'contactsList', context: router.get('store').findAll(App.Contact)})emberjs.com/api/classes/… 了解更多详情
    • @sly7_7 这是个好消息!谢谢:)
    猜你喜欢
    • 2012-07-25
    • 2013-02-23
    • 1970-01-01
    • 2012-12-17
    • 2012-11-18
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多