我與here有同樣的問題,但不明白它是如何適用於我的情況,因爲我沒有「顯示」路線。Ember js如何強制重新加載特定選定的記錄?
我繼承了這個應用程序,以及router.js看起來是這樣的:
App.Router.map(function() {
this.route('index', {
path: '/'
});
return this.resource('parent', {
path: '/:parent_id'
}, function() {
this.resource('games', {
path: '/games'
});
return this.resource('game', {
path: '/game/:game_id'
});
});
});
後端是Rails的,而當/遊戲網址在灰燼被擊中,它調用了Rails遊戲索引操作GamesController,如預期的那樣。
的遊戲模板渲染每場比賽:
<ul class="gamesList">
{{#each game in sortedGames}}
{{#link-to 'game' game class='gameItem u-cf' tagName='li'}}
<div class="gameItem-name u-before6of12 u-after1of12">{{game.name}}</div>
<div class="gameItem-description u-before6of12 u-after1of12">{{game.description}}</div>
{{/link-to}}
{{/each}}
但點擊遊戲鏈接時,它加載從灰燼存儲遊戲,並沒有使該API的請求。
我需要它向API發出請求,因爲: 1.遊戲列表僅包含名稱和說明,因爲列表可能包含許多遊戲,所以我們只想爲每個遊戲加載一個數據子集遊戲。 2.由Rails Show操作加載的單個遊戲應該使用不同的序列化程序來加載單個遊戲的所有附加內容(包括嵌入的子對象)。
這是遊戲路線:
App.GamesRoute = Ember.Route.extend(Easypeasy.ResetScroll, {
model: ->
return this.store.find('game', {
parent: @modelFor('parent').get('slug')
})
})
,這是遊戲路線:
App.GameRoute = Ember.Route.extend(App.ResetScroll)
如何觸發灰燼到用戶點擊加載單機遊戲?
感謝您的快速回復,但是我覺得奇怪的是代碼中沒有地方是這行:this.store.findRecord('game',params.game_id)。如果它沒有執行findRecord,它是如何從商店加載它的?我試着把它添加到GameRoute(你可以在上面看到基本上是空的),但是這給出了一個錯誤(不能讀取屬性undefined) – rmcsharry
對不起,它給出了這個錯誤:處理路由時出錯:game this.store.findRecord是不是一個函數 - 我想這是因爲我在燼1.12。所以我嘗試你的提議的線爲燼<2.0並得到這個錯誤:處理路線時出錯:遊戲參數沒有定義 – rmcsharry
好吧我修正了錯誤,通過添加參數函數參數,現在我得到另一個錯誤:遊戲重載未定義 – rmcsharry