Ich habe das gleiche Problem wie beschrieben here, aber verstehe nicht, wie es für meine Situation gilt, da ich keine "Show" Route habe.Ember js Wie erzwinge das Nachladen eines bestimmten ausgewählten Datensatzes?
geerbt ich diese App, und die router.js sieht wie folgt aus:
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'
});
});
});
Das Backend ist Rails, und wenn die/Spiele-URL in Ember getroffen wird, ruft er die Spiele Index Aktion in den Schienen GamesController, wie erwartet.
Die Spiele Vorlage macht jedes Spiel:
<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}}
aber wenn das Spiel Link geklickt wird, lädt es das Spiel von Ember zu speichern und nicht eine Anfrage an die API machen.
Ich brauche es, um eine Anfrage an die API zu stellen, weil: 1. Die Liste der Spiele enthält nur Name und Beschreibung, da die Liste viele Spiele enthalten kann, so dass wir nur eine Teilmenge der Daten laden wollen Spiel. 2. Ein einzelnes Spiel, das von der Rails Show-Aktion geladen wird, sollte einen anderen Serializer verwenden, um den gesamten zusätzlichen Inhalt für ein einzelnes Spiel zu laden (einschließlich eingebetteter Child-Objekte).
Dies ist die Spiele Route:
App.GamesRoute = Ember.Route.extend(Easypeasy.ResetScroll, {
model: ->
return this.store.find('game', {
parent: @modelFor('parent').get('slug')
})
})
und das ist das Spiel Route:
App.GameRoute = Ember.Route.extend(App.ResetScroll)
Wie kann ich Ember löse das einzelne Spiel zu laden, dass der Benutzer auf klickt?
Danke für die schnelle Antwort, aber was ich seltsam finde ist nirgends im Code ist diese Zeile: this.store.findRecord ('Spiel', params.game_id). Wenn es keinen findRecord ausführt, wie wird es dann aus dem Store geladen? Ich habe versucht, das zu der GameRoute hinzufügen (die Sie oben sehen, ist grundsätzlich leer), aber das gibt einen Fehler (kann nicht lesen Eigenschaft 'Suche' von undefined) – rmcsharry
Sorry gibt es diesen Fehler: Fehler bei der Verarbeitung von Route: Spiel this.store.findRecord ist keine Funktion - ich vermute, das liegt daran, dass ich auf ember 1.12 bin. Also habe ich Ihre vorgeschlagene Zeile für ember <2.0 und bekomme diesen Fehler: Fehler beim Bearbeiten der Route: Spielparameter ist nicht definiert – rmcsharry
Ok Ich habe diesen Fehler durch Hinzufügen von Parametern zu den Funktionsparametern behoben, jetzt bekomme ich einen weiteren Fehler: Spiel reload ist nicht definiert – rmcsharry