0

我尝试使用backbone.js 创建我的第一个javascript 应用程序,但我发现了奇怪的行为,不明白两段代码之间的区别一个运行良好,第二个似乎不起作用。

在主页和“#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();
4

1 回答 1

3

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

我可能会误解,但是您似乎是在说第一个示例有效,而第二个示例无效?

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

如果您想将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();
于 2012-05-14T14:08:16.707 回答