In meiner Meteor App Backbone Router funktionieren nur wenn der Benutzer eingeloggt ist (über das accounts-base Paket). Es ist komisch. Dieser Router selbst funktioniert einwandfrei. Die showSaying()
Funktion wird überhaupt nicht aufgerufen, wenn der Benutzer nicht angemeldet ist.Meteor App - Backbone Router wird nicht gerufen
Unten ist der Code in client.js
im Client-Ordner. Muss ich etwas mit Sitzungen oder Auto-Publishing machen?
AphorismView = Backbone.View.extend({
el: "#aphorism-item",
initialize: function(){
_.bindAll(this, "render");
this.render();
},
render: function() {
this.$el.append("<p style='height:600px; background-color:blue;'>hi</p>");
}
});
// Creates a route to view the selected aphorism
var Aphorism = Backbone.Router.extend({
routes: {
"saying/:id": "showSaying"
},
showSaying: function (id) {
var aphorism_view = new AphorismView();
alert('Saying id ' + id + '.');
}
});
//establishes the router
appRouter = new Aphorism;
//Sets up backbone
Meteor.startup(function() {
filepicker.setKey("AerIOvsmAQRGaNdEv0judz");
filepicker.constructWidget(document.getElementById('attachment'));
Backbone.history.start({pushState: true});
});
Ich vermute, dass dies mit der Ladegeschwindigkeit/-reihenfolge zu tun hat und dass das Laden länger dauert, was dazu führt, dass appRouter pünktlich ist. Versuchen Sie, die appRouter-Deklaration in Meteor.startup zu platzieren. – Rahul
versuchte dieses Rahul - hat nicht funktioniert – squeezemylime
Ich habe noch nicht an Win8 Metro Apps gearbeitet, also weiß ich nicht, ob es eine Entwicklungskonsole wie in Browsers gibt. Wenn ja, würde ich 'appRouter = new Aphorism;' kurz vor 'Backbone.history.start ({pushState: true});' aufrufen und das appRoute einer globalen Variablen zuweisen, um festzustellen, ob es überhaupt initialisiert ist. – wowpatrick