2013-07-08 60 views
1

我有一個用戶列表和兩個視圖:一個表視圖列出所有可用用戶,一個詳細視圖查看特定用戶的詳細信息。現在我想在我的導航菜單中爲一位特殊用戶(「我」用戶)提供一個鏈接。我曾嘗試:鏈接到特定的對象ID

{{#linkTo "user/me"}}Me{{/linkTo}} 

灰燼說:

Assertion failed: The attempt to linkTo route 'user/me' failed. The router did not find 'user/me' in its possible routes: 'users', 'user', 'index' 

我也曾嘗試用:

{{#linkTo "user" "me"}}Me{{/linkTo}} 

但燼被鏈接到#/user/undefined,我想#/user/me

如何鏈接到特定的用戶ID?

我有this jsfiddle顯示我正在嘗試做什麼。

回答

2

您需要添加一個UserRoute,以此方式對模型進行序列化。

App.UserRoute = Ember.Route.extend({ 
    serialize: function(model) { 
     return {user_id:model}; 
    } 
}); 

我只是用model在這裏,你可以使用模型的某些屬性,通常id

使用linkTo的方式是給它一個獨立於嵌套的資源名稱,並限定動態段。

例如,post/1/comment/1。你linkTo會,

linkTo 'comment' thePost theComment

其中thePosttheComment是對應於後1模板訪問綁定/變量,評論-1。

這裏是工作jsfiddle

編輯:您需要加載相應的模型setupController

setupController: function(controller, model) { 
    App.User.find(model).then(function(result) { 
     controller.set('model', result); 
    }); 
} 

更新jsfiddle

更新2添加setupController到fiddle.(視intuitivepixel)

+0

謝謝。 jsfiddle中的鏈接按預期生成('#/ user/me'),但該視圖根本不顯示數據。 – dangonfast

+0

我加了相應的'setupController'看我的編輯。 –

+0

嗯。我沒有看到更新的jsfiddle中的setupController。出了些問題? – dangonfast

0

我已經創建了一個手動鏈接,而無需使用linkTo,這是做什麼我想要的。這是updated jsfiddle。通過這種方法,不需要混淆Routes,原始鏈接不會中斷。

在我的導航欄的代碼現在是:

<nav> 
    {{#linkTo "users"}}Users{{/linkTo}} 
    {{#linkTo "user" "me"}}Me (bad!){{/linkTo}} 
    <a class="ember-view" href="#/user/me">Me (good!)</a> 
</nav> 

該是生成的html:

<nav> 
    <a id="ember250" class="ember-view" href="#/users">Users</a> 
    <a id="ember253" class="ember-view" href="#/user/undefined">Me (bad!)</a> 
    <a class="ember-view" href="#/user/me">Me (good!)</a> 
</nav> 

這種方法的缺點是:

  • 我有手動使用html定義鏈接,這在linkTo的集合中看起來很尷尬。也許我應該爲此創建一個linkToId把手幫手。
  • 我必須手動跟蹤路線:如果我的路線有變化,我需要手動更新href。也許這可以通過訪問路由器配置在linkToId助手中處理。
  • 生成的鏈接沒有ember-id,我看不到解決方案。不知道這可能有什麼副作用。