1

我的应用程序有一个主视图,其中包含一些可由用户激活的隐藏元素。就像手机上典型的侧边栏从左侧滑入一样。或者当您点击它时会显示详细信息的购物车。

这些最初隐藏的元素中的信息始终是最新的,因为它们的内容映射到主应用程序模板中。所以我的路线不需要渲染任何 DOM。

转换是基于 JS 的。但现在我希望这些状态反映在 URL 中,以便获得一致的后退按钮行为。

如何使用 ember 框架实现这一点?

更新以使其更清楚,我在说什么:

据我了解,在 ember 中触发路由主要有两个副作用:

  1. 表示 URL 中的新状态,支持一致的浏览器历史记录。
  2. 渲染基于某些数据操作 DOM 的模板

就我而言,例如,当用户点击我需要的最小化购物车时:

  1. 表示 URL 中的新状态,支持一致的浏览器历史记录。
  2. 执行我的showCart()JS 函数(没有 DOM 更改,没有模板渲染)

当用户现在点击浏览器的返回按钮时,closeCart()应该执行(基于 URL 中的状态携带购物车打开的信息这一事实)。

4

2 回答 2

1

问题是,他们在哪里可以访问 Windows 中的这些幻灯片?只能从路线图中的一个位置访问它们吗?或者无论他们在什么视图中,用户都可以点击它吗?如果他们从不同的视图单击它,您是否将它们移回不同的路线只是为了在窗口中弹出一些幻灯片?

如果他们只能从一个地方单击它,那么您只需在该特定路由的 setupController 中添加代码即可触发 js 以滑出窗口。

 setupController: function(){
   Ember.run.scheduleOnce('afterRender', this, function(){
    //run some js to slide out the window
    });
 }

老实说,如果他们可以在任何地方单击按钮并显示幻灯片,我不会尝试将其放入 url。不过只是我的看法。

于 2013-08-08T05:34:23.943 回答
0

您可以使用 show 路线中的activatedeactivate方法来了解何时进入或退出您的路线:

App.ShowRoute = Ember.Route.extend({
    activate: function() {
        alert('Entering in show');
        // here would be your showCart
    },
    deactivate: function() {
        alert('Exiting from show');
        // and here the closeCart
    }
});

我在这里创建了一个现场演示,你可以看到它的工作原理。

于 2013-08-11T18:39:25.247 回答