【问题标题】:How to wire up an ember.js route with parameter如何使用参数连接 ember.js 路由
【发布时间】:2012-10-01 21:26:02
【问题描述】:

我有一个简单的模板,可以循环使用 ember-data 模型。在循环内部,我想提供一个简单的锚标记,将元素的 id 传递给路由器,以便我可以转换到另一个 ember 视图。当我将鼠标悬停在链接上时,下面的内容在 href 中显示“未定义”,但是当我在路由中记录内容时,它是 ember-data 模型(不仅仅是我想要的 id)。

<script type="text/x-handlebars" data-template-name="session">
    {{#each session in controller}}
      {{session.id}}<br />
      {{session.name}}<br />
      {{session.room}}<br />
      {{session.desc}}<br />

      {{#each speaker in session.speakers}}
      Speaker: {{speaker.name}}<br />
      {{/each}}

      <a {{action showSessionDetails session href=true}}>View Session Details</a>

      <br /><br />

    {{/each}}                                                                                                
  </script>

这是路由器

CodeCamp.Router = Ember.Router.extend({
  root: Ember.Route.extend({
    index: Ember.Route.extend({
      route: '/',
      showSessionDetails: Ember.Route.transitionTo('sessionDetails'),
      connectOutlets: function(router, context) {
        router.get('applicationController').connectOutlet('session', router.get('store').findAll(CodeCamp.Session)>
      },
      index: Ember.Route.extend({
        route: '/'
      }),
      sessionDetails: Ember.Route.extend({
        route: '/session/:id',
        connectOutlets: function(router, context) {                                                                
          console.log("here " + context);
        }
      })
    })
  })
});

提前谢谢你

【问题讨论】:

    标签: ember.js ember-old-router


    【解决方案1】:

    原来我只需要实现自己的序列化和反序列化方法

        sessionDetails: Ember.Route.extend({
            route: '/session/:session_id',
            connectOutlets: function(router, session) {
              router.get('applicationController').connectOutlet('session', session);
            },                                                                                                         
            serialize: function(manager, session) {
              return { "session_id": session.get('id') }
            },
            deserialize: function(manager, params) {
              return CodeCamp.Session.find(params["session_id"]);
            }
          })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      相关资源
      最近更新 更多