Javascript Ember JS-从路由和附加动态呈现模板

Javascript Ember JS-从路由和附加动态呈现模板,javascript,jquery,json,ember.js,dynamic,Javascript,Jquery,Json,Ember.js,Dynamic,我有一个使用ember 2.0的web应用程序,包含两个部分。左菜单和右内容,两者相互独立。 导航到route name PageRoute,应用程序从服务器加载配置JSON,处理它和检查,其中应呈现内容: { ... position: "left", ... } 或 然后我使用this.transitiono并将其重定向到RightRoute或LeftRoute。 RightRoute可以,LeftRoute是问题所在 开始时,左菜单为空。加载LeftRoute时,它不应替换某些菜单呈现的

我有一个使用ember 2.0的web应用程序,包含两个部分。左菜单和右内容,两者相互独立。 导航到route name PageRoute,应用程序从服务器加载配置JSON,处理它和检查,其中应呈现内容:

{
...
position: "left",
...
}

然后我使用this.transitiono并将其重定向到RightRoute或LeftRoute。 RightRoute可以,LeftRoute是问题所在

开始时,左菜单为空。加载LeftRoute时,它不应替换某些菜单呈现的模板或组件。 再次加载LeftRoute时,应从模型中渲染新菜单,并将其附加到现有的左侧菜单,以便可以在渲染菜单之间切换,最后一个菜单将可见。 同时,交换当前菜单时,应将其从左侧菜单列表中删除,并显示上一个菜单


我发现了一些附加视图的解决方案,但在Ember 2.0中该视图已被弃用,我尝试过这样做,但路由器无法使用pushObject访问组件中的操作,我尝试过无数其他方法,如使用数据存储或动态修改模型等。

我会这样做:

/控制器/left.js

/routes/left.js

/模板/left.hbs

在这种情况下,当您转换到“左”菜单时,它会将菜单附加到列表中。当您需要删除最后一个菜单时,您可以执行此操作。控制器用于“左”。删除任何其他路径(如页面路径)中的菜单


希望这能有所帮助。

它很有效!但是,RightRoute存在问题。它不仅是附加菜单,而且还删除右侧的重新加载内容。在RightRoute中,我正在向{{outlet maincontent}呈现我没有完全理解RightRoute的问题。您能详细描述一下吗?左边是菜单,右边是内容,两者都是独立的。当它传输到LeftRouter时,它假设只附加新菜单,而不处理渲染的右侧部分和内容。当它转换到RightRoute时,左部分菜单应保持不变,所有呈现前菜单都应保持不变,右部分应呈现新内容。希望这是可以理解的。我忘了指定问题:调用了LeftRoute,添加了菜单,但同时内容(在使用RightRoute之前呈现的内容)被重新呈现,并且是空白的。它以前工作正常吗?这就是Ember Router的工作原理:当您转换到RightRoute时,它会呈现right模板,当您转换到LeftRoute时,它会退出RightRoute并删除其模板和转换到LeftRoute。
{
...
position: "right",
...
}
import Ember from 'ember';
export default Ember.Controller.extend({

    menus: [],

    addMenu (menuData) {
        this.get('menus').addObject(menuData);
    },

    removeMenu () {
        this.get('menus').popObject();
    }

});
import Ember from 'ember';
export default Ember.Route.extend({

    setupController (controller, model) {
        controller.addMenu(model);
    }

});
{{#each menus as |menu| }}
    <!-- render menu -->
    {{log menu}}
{{/each}}