2013-03-03 2 views
5

Ich benutze das Router-Paket vom Meteoriten.Warum werden die Meteor Router-Funktionen immer zweimal ausgeführt?

Meteor.Router.add 
    "/article/:id": -> 
    log "article" 
    "article" 

Jedes Mal, wenn die Artikel-Seite/Vorlage geladen wird, wird die Callback-Funktion im Router immer zweimal laufen. Ich versuche, die Callback-Funktion zu verwenden, um die Anzahl der Aufrufe der Artikel zu erhöhen. Dies stellt ein Problem dar (jede Aufnahme wird zweimal durchgeführt).

Ist dies das beabsichtigte Verhalten? Oder habe ich etwas falsch gemacht?

UPDATE

Es ist eigentlich nicht immer zweimal ausgeführt wird. Es passiert, wenn die Seite aktualisiert wird oder wenn der Browser zum ersten Mal zur Seite navigiert. Trotzdem ist es immer noch ein Problem.

+0

Dies ist nicht das beabsichtigte Verhalten afaik, Wie laden Sie die URL jedes Artikels? ist es über einen 'Meteor.Router.to'? oder eine URL? – Akshat

+0

Ich verwende den bereitgestellten Helper {{renderPage}} in der HTML-Hauptdatei, die das -Tag enthält. Und die Artikelseite wird mit Inhalten innerhalb der jeweiligen Vorlage geladen. – Dave

+0

Ich meine, wenn Sie '/ article/1' in Ihrem Browser laden, benutzen Sie' '' um die Seite zu laden oder 'Meteor.Router.to ('/ article/1') '? – Akshat

Antwort

2

UPDATE:

Schuld daran ist das HTML5-History-API-Paket I für IE 8+ Routing-Unterstützung bin mit. Die folgende Lösung soll Menschen mit dem gleichen Setup und dem gleichen Problem helfen.


Eine Lösung gefunden. Aber ich bin mir nicht sicher, ob dies der beabsichtigte Weg ist, damit umzugehen.

"/article/:id": (id) -> 
    unless this.init 
    Session.set "articleId", id 
    Meteor.call "incArticleViews", id 
    "article" 

Wenn es eine bessere Lösung gibt, bitte posten Sie es und ich werde es akzeptieren.

+0

Das funktioniert nicht immer in FF, aber es verhindert den doppelten Treffer in Chrome. – cazgp