ember-bootstrap
没有使用 Bootstrap 的 JavaScript。
相反,它提供了自己的由 Ember 驱动的交互式组件。
导航栏的折叠/展开状态由collapsed
参数控制。这是从父组件传递到导航栏的外部值,如下所示:
<BsNavbar
@collapsed={{this.isNavbarCollapsed}}
>
单击汉堡菜单时,导航栏会触发onCollapse
或onExpand
操作。这些操作也应该由父模板提供:
<BsNavbar
@collapsed={{this.isNavbarCollapsed}}
@onCollapse={{fn this.setNavbarCollapsed true}}
@onExpand={{fn this.setNavbarCollapsed false}}
>
class ParentComponent extends Component {
@tracked isNavbarCollapsed = false;
@action setNavbarCollapsed(state) {
this.isNavbarCollapsed = state;
}
}
Navbar的官方文档采用了ember-bootstrap
一条捷径,而是执行以下操作:
<BsNavbar
@collapsed={{this.isNavbarCollapsed}}
@onCollapse={{action (mut collapsed) true}}
@onExpand={{action (mut collapsed) false}}
>
mut
是 Ember 的一个旧特性,它可以让你在父模板中实现一个导航栏,而无需在父 JS 文件中编写任何内容。
PS官方文档说@collapsed={{true}}
哪个是错的。如果您使用这样的静态值,您将无法更改状态。文档背后的演示实际上使用 @collapsed={{collapsed}}
. 根据现代 Ember 指南,它应该写为@collapsed={{this.collapsed}}
.