Подтвердить что ты не робот

Приложение Meteor - Магистральный маршрутизатор не получает вызова

В моем приложении 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});
});
4b9b3361

Ответ 1

Ваша проблема совсем не похожа на проблему Backbone.js.

Вы пытались помещать оператор console.log внутри обратного вызова startup(), чтобы убедиться, что он фактически вызывается во всех случаях? Если нет, то это между вами и Метером.

Ответ 2

Вы пытались дождаться готовности DOM? например: $( Backbone.history.start )

Ответ 3

Попробуйте потянуть декларацию истории магистрали за пределами Meteor.start. Там нет причин для этого. Кроме того, я считаю, что showSaying будет вызываться только в том случае, если вы перейдете на маршрут с параметром id (т.е. Вы не можете просто перейти к http://app/saying/).

Кроме того, вам может потребоваться вручную вызвать approuter.navigate, чтобы маршрутизатор работал, если вы пытаетесь перейти программно. (Я не знаю, есть ли у вас, но это может быть проблемой).

Кроме этого, я не могу найти никаких проблем с этим конкретным фрагментом кода. Проблема может быть где-то в другом месте, если я не предлагаю ее решить.

Для примера реализации рабочего маршрутизатора вы можете посмотреть https://github.com/Benaiah/Athenaeum/blob/master/client/router.coffee (отказ от ответственности: это приложение, которое я пишу) и попытайтесь найти любые другие отличия.

Надеюсь, что это поможет.