Как подключить маршрут ember.js с параметром

У меня есть простой шаблон, который зацикливается на модели ember-data. Внутри цикла я хочу предоставить простой тег привязки, который передает идентификатор элемента маршрутизатору, чтобы я мог перейти к другому представлению Ember. То, что у меня есть ниже, показывает «неопределенное» в href, когда я навожу курсор на ссылку, но когда я регистрирую содержимое в маршруте, это модель ember-data (а не только идентификатор, как мне бы хотелось).

<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);
        }
      })
    })
  })
});

заранее спасибо


person Toran Billups    schedule 01.10.2012    source источник


Ответы (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"]);
        }
      })
person Toran Billups    schedule 01.10.2012