Sto costruendo un app con due punti di vista: a casa & visualizzazione elencoMeteor, Come modifico un modello (vista) sull'evento?
Quando l'utente fa clic sul nome di una lista per la vista a casa, si dovrebbe passare alla "visualizzazione elenco" modello. Ho aggiunto una variabile di sessione chiamata 'vista', impostandola su 'casa' all'avvio. Quando viene rilevato un evento click su uno degli elementi (nome elenco) nella schermata iniziale, cambia il valore della visualizzazione in "viewList". Quindi in HTML, ho un'istruzione if per mostrare il modello di casa se 'view' è 'home', altrimenti mostra il template 'viewList'.
Posso dire che la prima parte funziona perché sto emettendo il valore di 'vista' e viene emesso il valore "viewList" quando si fa clic su un nome di lista, semplicemente non cambia il modello.
Cosa mi manca?
Il mio codice:
mylists.js:
Lists = new Mongo.Collection("lists");
if (Meteor.isClient) {
Meteor.startup(function() {
Session.set("view", "home");
});
Template.main.helpers({
view: function() {
return Session.get("view");
}
});
Template.home.helpers({
lists: function() {
return Lists.find({}, {sort: {lastUsed: -1}});
}
});
Template.home.events({
"submit #new-list": function (event) {
var name = event.target.listName.value;
Lists.insert ({
name: name,
createdAt: new Date(),
lastUsed: new Date()
});
},
"click .list-row": function (event) {
Session.set("view", "viewList");
}
});
}
mylists.html:
<head>
<title>My Lists</title>
</head>
<body>
{{> main}}
</body>
<template name="main">
{{view}}
{{#if view "home"}}
{{> home}}
{{else}}
{{> viewList}}
{{/if}}
</template>
<template name="home">
<header>
<h2>My Lists</h2>
</header>
<ul id="lists">
<li>
<form id="new-list">
<input type="text" name="listName" value="My List 1">
<input type="submit" value="Save">
</form>
</li>
{{#each lists}}
{{> list}}
{{/each}}
</ul>
</template>
<template name="viewList">
<header>
<h2>View List</h2>
</header>
<!-- list details will show here -->
</template>
<template name="list">
<li class="list-row" id="{{_id}}">{{name}}</li>
</template>
cosa vuoi cambiare? la strada? da casa> visualizza elenco? – Ethaan
Ho aggiornato la mia domanda dopo aver tentato di risolverlo usando una variabile Session, ma non ha funzionato. – Josh
controllare l'aggiornamento della risposta – Ethaan