在Ember.js中添加路径到模态/叠加层

时间:2015-06-25 12:58:19

标签: ember.js ember-cli pinterest

我知道Ember的咒语首先是URL,而URL应该是页面内容的序列化,但我有一个场景,我想为一个组件/页面创建一个路径,它将存在于一个模态中,并且可以从整个网站的各个地方。我总是希望这个URL代表资源的实际路由,如果资源碰巧嵌套在另一个路由中,则不会改变。

类似的例子是Pinterest。当您查看引脚的馈送时,您处于root路线上。您也可以搜索引脚,然后将您定向到/search/pins路线。

从这两个路径中,您可以单击一个引脚,该引脚将以模态/叠加方式打开它,并将URL更改为引脚的url。由于您可以查看来自站点不同区域的引脚,因此叠加层背后的背景将是各种路径,具体取决于您单击引脚的位置,而不是路径的序列化版本。

Ember可以使用这种功能吗?如果是这样,任何资源/提示要审查?

- ac。

1 个答案:

答案 0 :(得分:1)

This SO Question可能是一个指针,我在使用路由中activate挂钩内的render方法之前已经这样做了。

因此,当您输入指定路线时,我的模态模板会注入到命名的outlet(例如{{outlet 'modal'}})中。

以下是我正在处理的项目中描述的方法示例。

在父路由中,我有一个名为openEditModal的动作(在我的情况下,我做了一些逻辑,比如获取按下编辑按钮的视图模型,并在编辑路径上设置它控制器)。这action最终transitionTo编辑路线。

    openEditModal: function(eventModel) {

        // Do any logic here like setting the model for the modal

        // Transition to the edit route
        this.transitionTo('patient.events.edit');
    },

所以当edit路线有效时:

activate: function() {

    // render the template in the 'modal' outlet
    this.render('path/to/modal/template', {
        controller: 'patient.events.edit', // The controller to use for the injected template
        view: 'patient.events.edit', // The view to use for the injected template 
        into: 'patient.events', // The parent template to inject this template into
        outlet: 'modal' // The name of the outlet in that parent template
    });

},