两个主干网定义之间的差异.路由器定义

Difference between two Backbone.Router definitions

本文关键字:定义 之间 路由器 主干网 两个      更新时间:2023-09-26

我尝试用主干创建我的第一个JavaScript应用程序.js而且我发现了奇怪的行为,不明白2段代码之间的区别一个效果很好,第二个似乎不起作用。

在主页和"#test"网址上显示警报

var AppRouter = Backbone.Router.extend({
    routes:{
        "": 'index',
       "test": 'test'
    },
    index: function(){
        alert('index');
    },
    test: function(){
        alert('test');
    }    
});
var app = new AppRouter();
Backbone.history.start();

这不起作用,但Backbone.history.hanlers看起来是一样的

var router = new Backbone.Router({
    routes:{
        "": 'index',
       "test": 'test'
    },
    index: function(){
         alert('index');
    },
    test: function(){
         alert('test');
    }    
});
Backbone.history.start();

这两段代码之间的区别在于,在第一段代码中,您正在创建一个名为AppRouter的新类,而在第二段代码中,您只是在创建一个普通的Backbone.Router类。

我可能是误解了,但你似乎是在说第一个例子有效,第二个例子无效?

第二个示例不起作用的原因是 Backbone.Router 只接受routes哈希作为其构造函数的参数。 您传递的indextest函数不会作为对象上的函数创建。

如果要将routes哈希传递给构造函数,则仍然需要使用实际的路由函数扩展Backbone.Router。 例如:

var AppRouter = Backbone.Router.extend({
    index: function(){
        alert('index');
    },
    test: function(){
        alert('test');
    }    
});
var app = new AppRouter({ 
    routes:{
        "": 'index',
       "test": 'test'
    }});
Backbone.history.start();