【问题标题】:Meteor app - Backbone router not getting calledMeteor 应用程序 - 没有调用主干路由器
【发布时间】:2013-01-26 21:58:06
【问题描述】:

在我的 Meteor 应用程序中,Backbone 路由器仅在用户登录时工作(通过 accounts-base 包)。真奇怪。该路由器本身工作正常。当用户未登录时,根本不会调用 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});
});

【问题讨论】:

  • 我怀疑这与加载速度/顺序有关,并且登录后加载时间更长,导致 appRouter 准时准备就绪。尝试将 appRouter 声明放在 Meteor.startup 中。
  • 试过这个 Rahul - 没用
  • 我还没有开发过Win8 Metro Apps,所以我不知道是否有像浏览器一样的开发控制台。如果有,我会在Backbone.history.start({pushState: true}); 之前调用appRouter = new Aphorism; 并将appRoute 分配给一个全局变量以查看它是否已被初始化。

标签: javascript backbone.js meteor router


【解决方案1】:

您的问题似乎根本不是 Backbone.js 问题。

您是否尝试过在startup() 回调中放置一个console.log 语句来验证它是否在所有情况下都被实际调用?如果没有,那就是你和 Meteor 之间的事了。

【讨论】:

    【解决方案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(免责声明:它来自我正在编写的应用程序)并尝试找出任何其他差异。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2012-08-17
        • 2012-12-27
        • 2013-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多