使用Ember在侧边栏中加载和卸载多个组件

亚当·奈特斯

我有一个页面,用户在此页面上为客户建立订单。在订单的各个阶段,他们可能会达到需要添加其他内容的地步。例如,当为客户选择地址时,客户可能具有需要添加的新地址,或者可能需要编辑现有地址。

我希望能够在右侧边栏中动态加载小组件,但是可以有任意数量,所以我不能只拥有类似的东西

{{outlet 'right-hand-bar'}}

例如,用户可能单击了添加地址,但随后又可能单击了订单中的产品,而我想在添加地址组件下方显示另一个包含该产品详细信息的组件。我想这有点像主要的细节概念,但是细节可以包含多个不同的细节。

仅拥有多个出口并使用下一个可用的出口是不合适的,即

{{outlet 'right-hand-bar1'}}
{{outlet 'right-hand-bar2'}}
...

在Ember CLI中有没有办法做到这一点?一个插座中有X个组件?

编辑

我正在考虑一个涉及使用main div创建sideBar组件的概念

<div class='side-bar-load-area'></div>

然后在sideBar组件中执行loadComponent操作,该操作采用要加载的组件的名称。

不确定如何按名称加载组件?我已经为控制器看到了这一点:

var comp = App.FooBarComponent.create();
comp.appendTo('#someArea');

this.controllerFor('someName');

因此,理想情况下,希望将其组合起来并使其适用于我的子组件吗?

并为边栏提供closeComponent动作,给定的组件可以调用该动作来卸载自身,对于插座,您可以执行此操作

closeOutlet: function() {
  return this.disconnectOutlet({
    outlet: 'modal',
    parentView: 'application'
  });
}

因此,再次希望将其翻译为可用于在DOM中而不是在插座中卸载组件吗?

约翰·罗伊斯(John Roys)的篮子

假设您正在运行Ember 1.11+,则可以使用新的组件帮助器

基本上,您可以按照以下方式进行操作:

模板/main_view.hbs

<div class="sidebar">
  {{#each componentNames as |componentName|}}
    {{component componentName}}
  {{/each}}
</div>

和用于在以下位置创建所述组件的按钮:

模板/main_view.hbs

<button {{action "addAddress"}}>New address</button>

以及控制器中的动作本身:

控制器/main_view.js

actions: {
  addAddress: function() {
    var controller = this;
    var componentNames = controller.get("componentNames");
    componentNames.pushObject("address");
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用侧边栏组件反应参数路由

QML:在页面中加载50多个组件

使用 react router 4.2 渲染侧边栏和其他组件

如何使用ember-cli在组件中加载外部JS文件

从侧边栏加载内容

在自己的AppDomain中加载和卸载程序集

在Windows 8中加载和卸载ISO文件

在侧边菜单和导航栏上加载相同的链接

如何在CodeIgniter中加载带有会话数据的页面视图(如标题,侧边栏)?

子组件加载时在父组件中加载React边栏

如何使用 jquery 和 css 隐藏和显示侧边栏?

如何在某些选定组件上隐藏一些导航栏和侧边栏

在特定组件上隐藏垫子侧边栏和垫子工具栏

我卸载了unity,桌面消失了,然后重新安装,现在侧边栏和顶部菜单栏丢失了

加载和卸载angular6组件

使用jQuery和PHP动态重命名侧边栏菜单

React Router 在地址栏中加载 URL 但不加载组件

使用angular2在同一路由器出口中加载多个组件

ACF 和侧边栏(WordPress)

ACF 和侧边栏(WordPress)

使用React-spring淡出并卸载加载屏幕组件

选择侧边栏项目不显示组件

ToggleCollapsed在导入的侧边栏reactjs组件上

创建带有侧边栏和动态内容/组件的 Angular 项目 - 辅助路由

如何使用html,css和js一起包含侧边栏和导航栏

当按钮设置在侧边栏中并使用位置显示在侧边栏中时,如何管理按钮和模式弹出窗口?

使用功能组件在 reactjs 中加载更多按钮

加载侧边栏打开谷歌表格

在单个布局中加载多个节时的@yield和@section问题