Il mio dilemma è che vorrei passare più proprietà di oggetti a un ferro: percorso router in Meteor. Il ragionamento è che mi piacerebbe passargli una proprietà per nominare il mio url con e una proprietà per trovare un elemento della collezione con. Sono completamente indipendenti l'uno dall'altro e non posso usare la proprietà url perché non è un valore nell'elemento della raccolta. Questo è quello che ho:Meteor, Iron: Router che passa più proprietà su Router.go
Template.items.events({
'click': function() {
itemName = this.name.replace(/ /g,'')
Router.go('itemDetails', {itemName: itemName})
}
});
Il problema è che, sebbene il router gestisce questo fine e mi manda a l'URL corretto, non posso usare itemName
per trovare l'oggetto elemento della raccolta che sto cercando (assumere questo è impossibile).
Router.route('/items/:itemName', {
name: 'itemDetails',
data: function() {return Items.findOne({name: this.params.itemName})}
});
la configurazione del router di cui sopra non restituirà nulla perché name != this.params.itemName
per qualsiasi oggetto.
Ho provato a passare l'oggetto this
o creare oggetti con proprietà multiple, ma ferro: il router non ce l'ha.
Qualsiasi aiuto è apprezzato, grazie.
Modifica n. 1: per spiegare meglio la domanda, il mio problema è lo stesso del routing a una pagina che utilizza più ID nell'URL. Ad esempio, come fare per passare le proprietà da stirare: router per riempire le proprietà :_id
e :itemId
?
Router.route('items/:_id/:_itemId', {
name: 'detailDetails',
data: function() {...}
});
Edit # 2: Quello che mi piacerebbe fare in particolare è passare due proprietà a ferro: router e avere uno di loro essere aggiunto all'URL, e l'altro da utilizzare nella proprietà dei dati del percorso di restituire un oggetto da collezione. Esempio:
....
Router.go('itemDetails', {_id: itemBeingPassedId, itemName: nameToBeAppendedToURL})
....
Router.route('/items/:itemName', {
name: 'itemDetails',
data: function(){return Items.findOne(_id)
});
Ogni volta che provo a fare questo, si dice che _id
non è definito. Quindi, in sostanza, come posso passare una proprietà a data
senza far parte dell'URL e utilizzando this.params
?
Bene, si stanno rimuovendo gli spazi, quindi ovviamente non riesce a trovarli. Prendi in considerazione l'aggiunta di una proprietà [slug] (https://en.wikipedia.org/wiki/Semantic_URL#Slug) agli oggetti della tua collezione (alla creazione o quando l'itemName cambia) in questo modo usi semplicemente 'Router.go ('itemDetails' , {slug: this.slug}) 'e' Items.findOne ({slug: this.params.slug}) '. – user3557327
Sì, conosco il ragionamento sul motivo per cui non può essere trovato - Penso di aver fatto un pessimo lavoro spiegandolo. Stavo cercando di evitare l'uso di una lumaca, ma sembra che potrebbe essere l'unico modo per aggirarla. Grazie per l'aiuto. – TheNastyOne