0

私はbackbone.jsを使用して最初のJavaScriptアプリを作成しようとしましたが、奇妙な動作を見つけました。2つのコードの違いがわかりません。1つはうまく機能し、2つ目は機能しないようです。

ホームページと「#test」URLにアラートを表示します

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

2ビットのコードの違いは、最初のコードではという新しいクラスを作成しているのAppRouterに対し、2番目のコードではプレーンBackbone.Routerクラスを作成しているだけであるということです。

誤解されているかもしれませんが、最初の例は機能し、2番目の例は機能しないと言っているようです。

2番目の例が機能しない理由は、Backbone.Routerがroutesコンストラクターへの引数としてのみハッシュを受け入れるためです。渡したindexおよびtest関数は、オブジェクトの関数として作成されません。

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 に答える