Sto usando Meteor e ho un problema in cui il mio contenuto è stato rifatto quando non lo desidero.Contenuto avvolto in currentUser re-rendering quando l'utente è aggiornato
Ho il mio contenuto principale avvolto in un currentUser
se affermazione che ritengo sia abbastanza standard.
{{#if currentUser}}
{{> content}}
{{/if}}
Il problema con questo è il mio modello di contenuto è stato rieseguito quando aggiorno il mio oggetto utente. C'è un modo per aggirare questo? Non faccio riferimento agli utenti da nessuna parte all'interno del modello di contenuto.
Grazie!
Ecco un'applicazione di esempio per riprodurre il mio problema:
HTML
<head>
<title>Render Test</title>
</head>
<body>
{{loginButtons}}
{{> userUpdate}}
{{#if currentUser}}
{{> content}}
{{/if}}
</body>
<template name="userUpdate">
<p>
<input id="updateUser" type="button" value="Update User Value" />
User last update: <span id="lastUpdated">{{lastUpdated}}</span>
</p>
</template>
<template name="content">
<p>Render count: <span id="renderCount"></span></p>
</template>
JavaScript
if (Meteor.isClient) {
Meteor.startup(function() {
Session.set("contentRenderedCount", 0);
});
Template.content.rendered = function() {
var renderCount = Session.get("contentRenderedCount") + 1;
Session.set("contentRenderedCount", renderCount);
document.getElementById("renderCount").innerText = renderCount;
};
Template.userUpdate.events = {
"click #updateUser": function() {
Meteor.users.update({_id: Meteor.userId()}, {$set: {lastActive: new Date()}});
}
};
Template.userUpdate.lastUpdated = function() {
return Meteor.user().lastActive;
};
}
if (Meteor.isServer) {
Meteor.users.allow({
'update': function() {
return true;
}
});
}
Aggiornamento: Avrei dovuto spiegare questo esempio un piccolo. Dopo aver creato un utente, facendo clic sul pulsante Aggiorna valore utente, il conteggio del rendering aumenta. Questo perché è racchiuso in un {{#if currentUser}}
. Se questo è se viene rimosso, si noterà che il conteggio delle rendering rimane a 1.
Inoltre, è necessario aggiungere i pacchetti accounts-ui
e accounts-password
al progetto.
che ha funzionato perfettamente. Grazie! – Irving
@MurWade con il nuovo motore Blaze introdotto con Meteor 0.8.3 alcuni mesi fa. Ora puoi semplicemente usare '{{#if currentUser}} ... {{/ if}}' senza le cose all'interno del re-rendering – Akshat
Usando {{pathFor route = 'dashboard'}} all'interno del controllo lo rende re-render , qualche idea su come disabilitarlo? – digz6666