Ответ 1
Ваша проблема совсем не похожа на проблему Backbone.js.
Вы пытались помещать оператор console.log внутри обратного вызова startup()
, чтобы убедиться, что он фактически вызывается во всех случаях? Если нет, то это между вами и Метером.
В моем приложении Meteor Магистральные маршрутизаторы работают только при входе пользователя в систему (через базовый пакет учетных записей). Это странно. Этот маршрутизатор работает отлично. Функция showSaying()
не вызывается вообще, когда пользователь не вошел в систему.
Ниже приведен код в client.js
в папке клиента. Нужно ли мне что-то делать с сеансами или авто-публикацией?
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});
});
Ваша проблема совсем не похожа на проблему Backbone.js.
Вы пытались помещать оператор console.log внутри обратного вызова startup()
, чтобы убедиться, что он фактически вызывается во всех случаях? Если нет, то это между вами и Метером.
Вы пытались дождаться готовности DOM? например: $( Backbone.history.start )
Попробуйте потянуть декларацию истории магистрали за пределами Meteor.start
. Там нет причин для этого. Кроме того, я считаю, что showSaying
будет вызываться только в том случае, если вы перейдете на маршрут с параметром id
(т.е. Вы не можете просто перейти к http://app/saying/
).
Кроме того, вам может потребоваться вручную вызвать approuter.navigate
, чтобы маршрутизатор работал, если вы пытаетесь перейти программно. (Я не знаю, есть ли у вас, но это может быть проблемой).
Кроме этого, я не могу найти никаких проблем с этим конкретным фрагментом кода. Проблема может быть где-то в другом месте, если я не предлагаю ее решить.
Для примера реализации рабочего маршрутизатора вы можете посмотреть https://github.com/Benaiah/Athenaeum/blob/master/client/router.coffee (отказ от ответственности: это приложение, которое я пишу) и попытайтесь найти любые другие отличия.
Надеюсь, что это поможет.