Javascript 在Ember中不在父模板中呈现子模板的正确且干净的方法

Javascript 在Ember中不在父模板中呈现子模板的正确且干净的方法,javascript,model-view-controller,ember.js,Javascript,Model View Controller,Ember.js,我正在检修一个旧项目,使用带有firebase的ember来持久化数据。这是一个餐厅网站,我添加了身份验证,我允许管理员用户从餐厅菜单中添加和删除菜单项 我的路线安排如下 Router.map(function() { this.route('menu', function() { this.route('add'); }); }); 模型功能正常工作,但由于添加菜单项时的嵌套路径,菜单模板会不断增长,并将添加表单推到折叠下方。我的问题是,当您使用localhost/menu/

我正在检修一个旧项目,使用带有firebase的ember来持久化数据。这是一个餐厅网站,我添加了身份验证,我允许管理员用户从餐厅菜单中添加和删除菜单项

我的路线安排如下

Router.map(function() {
  this.route('menu', function() {
    this.route('add');
  });
});

模型功能正常工作,但由于添加菜单项时的嵌套路径,菜单模板会不断增长,并将添加表单推到折叠下方。我的问题是,当您使用localhost/menu/add时,正确的获取方法是什么,以使localhost/menu不会呈现?

第一个选项

因此,似乎
菜单
菜单.添加
路径没有太大关系。 第一个建议是将它们分开,因为它们是不相关的路线:

  this.route('add-menu');
  this.route('show-menu');
第二选项

但是如果它们有点关联,一个更好的建议是创建一个新的路径来列出菜单项。例如:

this.route('menu', function() {
  this.route('add');
  this.route('list');
});
这样,
菜单
路由模板将为空。(在
菜单
路由中,您可能需要添加一个
重定向
钩子以重定向
菜单
路由到
菜单。列表

第三种选择

但我认为更好的建议是使用
索引
路由。使用
索引
路由,而不是定义上面的
列表
路由。索引路径将列出菜单项

看一看

从灰烬指南