Come posso rendere Iron: il router rielabora un modello?iron: il router non verrà nuovamente visualizzato dopo la modifica dell'itinerario con lo stesso modello
ho questo html:
<head>
</head>
<body>
</body>
<template name="mainLayout">
<a href="{{pathFor route='list'}}">list</a>
<a href="{{pathFor route='find' query='q=xxx'}}">find</a>
{{> yield}}
</template>
<template name="listTemplate">
<p>list</p>
</template>
e questo JS:
Router.configure({
layoutTemplate: 'mainLayout'
});
Router.route('/list', {
name: 'list',
template: 'listTemplate'
});
Router.route('/find', {
name: 'find',
template: 'listTemplate',
data: function() {
return this.params.query;
}
});
if (Meteor.isClient) {
Template.listTemplate.rendered = function() {
if (this.data)
console.log('find ' + this.data.q);
else
console.log('list all');
};
}
Quando clicco sui link per passare da una visualizzazione (simulati qui con console.log), il percorso non cambia, ma il modello non è ri-reso. C'è un modo per forzare il ferro: il router per il rendering?
Hai detto: "quando faccio clic sui link per cambiare vista", ma non stai cambiando effettivamente le visualizzazioni perché entrambi i percorsi utilizzano lo stesso modello. Dobbiamo sapere esattamente cosa stai cercando di fare qui. – Scott
Penso di cambiare visualizzazione: la funzione Template.Rendered utilizza i dati forniti dal router per visualizzare una vista diversa, con dati diversi. (Sto simulando questo nel codice di esempio, ma la funzione di rendering "reale" ha un sacco di logica per mostrare viste diverse). Ho quindi anche dato al percorso un nome diverso e un URL diverso. Lo fa utilizzando lo stesso modello con diversi parametri. Riesco a vedere l'url cambiare mentre sto cambiando route, se ad esempio utilizzo un route suBeforeAction, viene chiamato, ma non riesco a recuperare il template con i nuovi dati e parametri. – willemx
Stai davvero tralasciando troppo codice per essere in grado di aiutarti. Non riesco a pensare a una buona ragione per forzare un re-rendering sul modello. In generale, si desidera fornire al modello dati reattivi e aiutanti reattivi per controllare ciò che viene visualizzato. Se aggiorni la tua domanda e mi mostri effettivamente cosa stai cercando di fare, potrei essere in grado di fornirti una risposta più concreta. – Scott