2012-10-01 62 views
0

連接ember.js路由我有一個簡單的模板,它循環使用了一個ember-data模型。在循環內部,我想提供一個簡單的錨點標記,將元素的id傳遞給路由器,以便我可以轉換到另一個ember視圖。當我將鼠標懸停在鏈接上時,我在下面顯示「未定義」,但是當我在路由中記錄內容時,它是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); 
     } 
     }) 
    }) 
    }) 
}); 

預先感謝您

回答

0

原來我只是需要實現自己的序列化和反序列化方法

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