2012-12-06 7 views
5

Ich habe ein Problem mit Blick auf die Meteor keine Sitzung der Wert, wenn eine Webseite auf einer anderen Web-Seite bewegt halten konnte. Ich bin neu für Meteor, vielleicht missbrauche ich es. Wie gehe ich mit dem Wert der Sitzung zwischen den Seiten um? Ich möchte den Wert der Sitzung beibehalten, auch wenn die Seite auf die andere Seite verschoben oder der Browser neu geladen wird.Meteor konnte keine Sitzung Wert unter Seiten halten

Ich bin der Planung einer Web-Anwendung mit JavaScript-Framework wie Meteor, Mojito und Express (Node.js) und sie vor der Entwicklung testen zu bauen.

Ich benutze Meteor Version 0.5.2 (6635ae1007) und Chrome-Version 23.0.1271.95.

Hier ist ein Testcode und Schritte für den Test:

(1) Klicken Sie auf die Schaltfläche 'Test':

Dies ändert 'Ergebnis ist' Labels 'Ergebnis in Ordnung ist.'

(2) Klicken Sie auf die Schaltfläche ‚Zurück zum Anfang Seite‘ Link oder den Browser neu zu laden:

Ich will das Label ‚Ergebnis ist OK‘ halten, aber es geht zurück zu ‚Das Ergebnis ist‘. Dies bedeutet, dass der Sitzungswert nicht definiert ist.

test.js

if (Meteor.isClient) { 
    Template.test.result = function() { 
    var result = Session.get('TEST'); 
    console.log('Result: %s', result); 
    return result; 
    } 

    Template.test.events({ 
    'click' : function() { 
     Session.set('TEST', 'OK'); 
    } 
    }); 
} 

test.html

<head> 
    <title>sample-session</title> 
</head> 

<body> 
    <h1>Session Test</h1> 
    <a href="./">Back to Top page<a/><br/> 
    {{> test}} 
</body> 

<template name="test"> 
    <input type="button" value="TEST"></input><br/> 
    Result is {{result}}. 
</template> 

Antwort

8

UPDATE Meteor hat jetzt eine Session.setDefault Methode, die genau das tut, was Sie erwarten.

Original-Antwort Unter

Das session Objekt in Meteor grundsätzlich vom session Konzept in anderer Frameworks (Rails/ASP.NET MVC/PHP) unterschiedlich ist - seine primäre Funktion in Meteor ist zu dienen als reactive variable für Client-Seite Code.

Es ist nicht entwickelt, um das zu tun, was Sie oben erwarten - sobald Ihr Link ausgelöst wird, wird der Clientkontext gelöscht und alle clientseitigen Sitzungswerte sind verschwunden. Meteor-Apps sind nicht für die Navigation im herkömmlichen Sinne gedacht, weshalb das so verwirrend erscheint. Es ist völlig verständlich :)

Anstatt nähern sich Navigation im traditionellen Sinne, schlage ich vor, Sie betrachten meteor-router, die hilft, den Übergang zwischen traditionellen und einem meteororesken Ansatz zu erleichtern.

Wenn Sie die Daten wie oben beschrieben beibehalten müssen, sollten Sie in die Datei amplify smart package nach persistenten Daten auf dem Client vor Ort suchen.

TIPP: Wenn Sie über Meteor in the docs erfahren, achten Sie sehr genau auf die Bezeichnung von Client/Server/irgendwo in der oberen rechten Ecke jedes Segments.

+0

Vielen Dank für Ihre hilfreiche Antwort. Jetzt verstehe ich das Wort "Sitzung" in Meteor. Ich überprüfe den Meteor-Router und erweitere das intelligente Paket, das du oben vorgeschlagen hast. –

Verwandte Themen