使用ember模式对话框的ember中的可路由模式

routable modal in ember using ember modal dialog

本文关键字:模式 ember 路由 对话框 使用      更新时间:2023-09-26

我想创建可路由模式。为此,我理解我必须在父路由中创建嵌套路由才能工作。像这样的东西。

Router.map(function() {
  this.route('posts', { path: '/' }, function() {
    this.route('show', { path: '/posts/:post_id' });
  })

在这个"显示"路由是可路由的模式,当用户移动到post/id时,它会打开一个模式。这很酷,我能做到。我面临的问题是,我有一个组件顶部的导航栏,它是静态的,包含一个通知下拉菜单的图标。下拉列表包含选项,该选项应打开模式框以显示图像。这与fb通知完全相似。现在我给出了一个打开图像模态的动作。这很好用。但是当右键点击并试图打开图像模式时,它会被搞砸。我可以通过使用可路由模态来解决这个问题。现在中有三条路线

Router.js

Router.map(function() {
  this.route('myprofile',{path:'/mystudio'});
  this.route("usrprofile",{path:'/usrprofile/:id'});
  this.route("feed",path:'/feed'})
});

现在我可以为image-modal创建一个新的路由。但在这种情况下,它将离开当前路线,移动到指定的路线。我不想要。它应该在当前路线中打开,当用户右键单击时,它应该移动到指定的路线并打开模式对话框。我想功能完全像facebook。我该如何做到这一点。提前谢谢。

除非有充分的理由说明图像模态必须基于路线,否则我认为你最好的做法是从导航栏组件向父路线发送一个动作,并在那里打开一个模态,将图像的URL传递给模态以显示。

在这种情况下,您唯一要放弃的是在图像打开时复制URL,然后访问与您复制的URL相同的图像。

如果这很重要的话,你确实有充分的理由使用基于路线的模态,在这种情况下,你应该考虑液体火力(这个选项是由Ember社区slack小组中的@alexpeller建议的)