【问题标题】:Backbone router.on event not firing from url骨干 router.on 事件未从 url 触发
【发布时间】:2015-02-23 17:21:37
【问题描述】:

我试图在用户输入 URL (whatever.com)/questions/new 时触发主干事件。

我的路由器如下所示:

define(['backbone'],function(BackBone){

    var routeExtend = Backbone.Router.extend({
            routes: {
              "": "home",   
              "questions/new": 'newQuestion'
            },

        });


    var initialize = function(){

        var Router = new routeExtend();         

        Router.on('route:newQuestion', function() {             
            console.log('new question');
        });

        BackBone.history.start();           
        return Router;

    }


    return {initialize:initialize};
});

如果我在我的应用程序中调用 router.navigate,事件会正常触发。

但是,如果“questions/new”是提供给网络浏览器的初始 URL,我希望能够触发“on”事件。有没有办法做到这一点?

【问题讨论】:

  • 你传入 BackBone,但在第 3 行扩展 Backbone.Router,注意你的情况
  • 嗨乔,请详细说明。
  • 第 1 行,您将 require 调用的结果分配给变量 BackBone (CamelCase),然后在第 3 行使用 Backbone,它必须是未定义的或在其他地方全局定义的,但不是与您向下使用的 BackBone 相同。
  • 感谢您的提醒。修复了拼写问题。不过,这并不能解决路由问题,知道我的要求是否可行吗?

标签: javascript backbone.js router


【解决方案1】:

你可以定义函数而不是 router.on 事件

var routeExtend = Backbone.Router.extend({
     routes: {
         "": "home",
         "questions/new": 'newQuestion'
     },
     newQuestion: function() {
         console.log('new question');
     }
 });

【讨论】:

    猜你喜欢
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多