2013-08-20 64 views
0

我正在嘗試自定義網址。emberjs:dynamic url

更具體地說,我已經做的是: mypage.com/details/1

我想要做的是: mypage.com/details/john-doe

當然,我想完全一樣的行爲和現在一樣,唯一的區別是自定義字符串,而不是ID

這裏是我的DS模型

App.Images.FIXTURES = [ 
{ 
      id:1, 
      name: "John", 
      lastName: "Doe", 
      age: 25, 
      customUrl: "john-doe" 
}, 
{ 
      id:2, 
      name: "John", 
      lastName: "Doe", 
      age: 31, 
      customUrl: "john-doe1" 
}]; 

*請注意customUrl屬性是唯一的。

我的路線:

App.Router.map(function(){ 
     this.resource("details", {path: 'details/:image_id'}); 
    }); 

而且根據HTML:

{{#linkTo 'details' this}}The details{{/linkTo}} 

我有哪些選擇?將「this」放入html中會自動獲取ID。我沒有運氣試過this.customUrl(我得到了URL中的「undefined」值)。

謝謝你的幫助!

回答

0

您可以在路由器覆蓋serialize返回customUrl而不是id

App.DetailsRoute = Ember.Route.extend({ 
    // .... 
    serialize: function(model) { 
     return { details_id: model.get('customUrl') }; 
    } 
}); 
+0

這實際上做的工作,但如果我再重新加載該頁面,它不會顯示。當我點擊圖片並被重新路由到細節時,它仍然是通過搜索的ID('返回App.Images.find(params.image_id);',json是:'{「image_id」:「1」 }'),儘管我已經實現了序列化函數。所以當用戶重新加載頁面時,json是不同的:'{「image_id」:「john-doe」}'。我怎麼能解決這個問題呢?因爲現在url可以正常顯示,但是如果我只給了我的頁面的url,那麼什麼都不顯示。 –

+0

嘗試使用'query'方法而不是'find'。 'App.Images.query({ 'image_id': '約翰-DOE'})' – wedens