Ich bin ziemlich neu in der EmberJS, also bitte helfen Sie mir zu verstehen und mein Problem zu lösen.Wie man ausgewählten Wert zwischen den Routen übergeben
Das ist mein Modell: book.js
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
author: DS.attr('string'),
picture: DS.attr('string'),
buyer: DS.attr('string'),
bought: DS.attr('boolean', { defaultValue: false }),
createdAt: DS.attr('date', { defaultValue() { return new Date(); } })
});
Ich habe die folgende Route: Books.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function(){
return this.store.findAll('book');
}
});
und ein wenig von books.hbs entsprechenden
{{#each model as |book|}}
<div class="book-container col-xs-12 col-sm-6 col-md-4">
<div class="card">
<div class="wrapper">
<div class="details col-md-12">
<h3 class="product-title">Title {{book.title}}</h3>
<p class="product-description">Author:{{book.author}}</p>
{{#link-to 'books.give' }} Buy {{/link-to}}
</div>
</div>
</div>
</div>
{{/each}}
Dieser Code gibt alle Bücher zurück, die ich momentan in der App gespeichert habe.
Die Idee ist, erhalten ausgewählte Book
Objekt aus books.hbs und es in give.hbs anzuzeigen.
Ich wollte diese Linie
von books.hbs Einzeln ein einziges Buch passiert{{#link-to 'books.give' }} Buy {{/link-to}}
verwenden zu give.hbs, aber ich weiß nicht, wie das zu tun, und wenn es ist die Art und Weise zu gehen ..
In gift.hbs erfand ich teilweise ein sehr ineffizienter Weg, es zu tun alle Bücher wieder durch Looping und wenn der Titel ein Spiel ist es dann angezeigt ...
{{#each model as |book|}}
{{#if (eq book.title "Harry Potter")}}
<h2><b>{{book.title}}</b></h2>
{{/if}}
{{/each}}
Offensichtlich ist der „Harry Potter“ string ist hart codiert, aber es könnte von books.hbs bestanden, und das würde den Trick tun, da meine Daten relativ klein ist.
Wenn irgendein Ember.js Guru mir den richtigen Weg zeigen könnte, würde das sehr geschätzt werden.
Dank
Dank @kumkanillam für eine Idee, um dies zu lösen. Ich habe den Weg mit dynamischen Segmenten gewählt. Ich habe ein bisschen die Namensgebung durcheinander gebracht, anstatt "geben" sollte ich "Buch" verwenden. Das Problem war, dass ich bereits eine Buchroute hatte, mit der ich neue Datensätze erstellte. –
Vielleicht können Sie 'give' route verwenden und es einem anderen Pfad zuordnen, etwa' this.route ('give', {path: '/: book_id'}) '. Sie können mit [AlexSpeller route diagonal] spielen (http://alexspeller.com/ember-diagonal/route/post). Lassen Sie es mich wissen, wenn Sie Probleme bei der Verwendung dynamischer Segmente feststellen. – kumkanillam
Meine Routen sind jetzt in Ordnung. AlexSpellers Website war sehr hilfreich. Alles funktioniert perfekt. Die letzte Frage ist, wie rufe ich mein Objekt in gift.hbs auf? Ich habe versucht, book.title, aber immer noch keinen Erfolg –