【问题标题】:Ember.js dynamic routingEmber.js 动态路由
【发布时间】:2012-09-03 09:51:27
【问题描述】:

我正在尝试使用 Ember.js 构建一个应用程序,包括路由、角色、登录、注销等。我现在的问题是我不知道如何处理动态路由。

我需要的是能够使用一条路线进行侧边栏导航。

当用户登录时,他/她将进入仪表板视图。假设他们点击左侧的帖子菜单,然后他们将看到帖子视图。我想以相同的方式处理这些问题,例如/:module/

module: Ember.Route.extend({
   route: '/admin/:module/',
   doLogout: Ember.Route.transitionTo('login'),
   connectOutlets: function (router) {
      "use strict";
      router.get('applicationController').connectOutlet('sidebar', 'sidebar');
      router.get('applicationController').connectOutlet('toolbar', 'toolbar');
   }
})

这是我需要一点帮助的地方。动态路由究竟是如何工作的?到目前为止,我发现的唯一可能是@wycats 的路由要点,但我无法从那里弄清楚:https://gist.github.com/2728699

【问题讨论】:

  • 我没有。我现在会。自从我问了这个问题,我发现我必须使用序列化/反序列化,但只是没有时间尝试。
  • 我回到了这个问题,尝试整理了几个小时,但没有成功。我最终放弃了结合命名插座的动态路由,因为我无法让它工作。如果有人确实有这样的例子,那将是受欢迎的。

标签: routing ember.js


【解决方案1】:

这是我使用的动态路由的精简片段:

myroute : Em.Route.extend({
    route : '/myroute/:tid', //tid is same as index of Object
    deserialize: function(router, params) {
        return App.router.getPath('myController.content').objectAt(parseInt(params.tid));
                    //you can use some other parameters than tid and find the coresponding element
        },
    serialize: function(router, context) {
        return {
        tid: App.router.getPath('myController.content').indexOf(context)
        }
        },
    connectOutlets: function(router, context) {
        var currentController = router.get('currentController');
        currentController.connectOutlet({
            name : 'controllername',
            outletName : 'outletname',
            context: context
            }); 
        },
    index: Em.Route.extend({
        route : '/'
        })
    }),

这是一个要点,解释 Connect Outlets 破解当前源代码以获取最新更新https://gist.github.com/3606155

【讨论】:

  • 谢谢,我会再试一次,然后回到这里讲述我的故事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
相关资源
最近更新 更多