簡體   English   中英

每次使用路由器時,Backbone.js觸發函數

[英]Backbone.js trigger function each time Router is used

只是想知道是否有一種簡單的方法可以在每次使用Backbone.js路由器時觸發自定義功能,而不必將其添加到每個路由器功能中。 現在我的腳本如下所示:

var AppRouter = Backbone.Router.extend({

    routes: {
        '' : 'index',
        'test': 'test',
    },

    initialize: function() {
    },

    index: function() {
        customFunction();
        indexView.render();
    },

    test: function() {
        customFunction();
        testView.render();
    },

});

我想要這樣的東西:

var AppRouter = Backbone.Router.extend({

    routes: {
        '' : 'index',
        'test': 'test',
    },

    initialize: function() {
    },

    index: function() {
        indexView.render();
    },

    test: function() {
        testView.render();
    },

    change: function() { 
        customFunction();
    }

});

有沒有人有什么建議?

每當Router匹配Router ,都會使用匹配的route:[name]觸發route:[name]事件,以允許類偵聽某些路由匹配。 所有主干對象還支持在事件發生時觸發的all事件。

因此,您可以利用此綁定到Router上的all事件,只要路由器執行某些路由,該事件就會觸發。

initialize: function() {
    this.bind( "all", this.change )
},

如果您對匹配的路由感興趣,則將其作為第一個參數傳遞給綁定函數。

常見問題解答中的更多詳細信息

編寫綁定的另一種(新的)主干方式是:

initialize: function() {
    this.listenTo(this, "all", this.change )
},

一個更好聽會只是route ,如果你問我。 因為all事件all觸發兩個事件,所以我認為這些是:

“ route:[name]” (參數)-匹配特定路由時由路由器觸發。
“ route” (路由,參數)-匹配任何路由時由路由器觸發。

我剛接觸骨干。 在Laurens回答之后,我設法通過以下方法調用每個路線更改

app_router.on('route', function(e){
    console.log(e);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM