如何扩展Backbone.history.navigate?

时间:2015-03-08 03:24:50

标签: javascript html backbone.js

当我调用Backbone.history.navigate时,我希望能够更改全局变量。

我想设置

window.linkclicked = true; // when someone clicks a link

window.linkclicked = false; // when back button is pushed.

有没有办法用javascript原型做到这一点? 如何在"导航"中插入该逻辑?方法

2 个答案:

答案 0 :(得分:0)

您可以扩展Backbone.history实例,只需根据需要重新定义navigate功能。

var originalNavigate = Backbone.history.navigate;

_.extend(Backbone.history, {
    navigate: function(fragment, options) {
        // do stuff before
        var returnValue = originalNavigate.apply(this, arguments);
        // do stuff after
        return returnValue;
    },
});

或者使用闭包模块模式:

Backbone.history.navigate = (function(navigate) {
    return function(fragment, options) {
        /* ...snip ...*/
    }
})(Backbone.history.navigate);

答案 1 :(得分:-1)

您可以使用下划线扩展功能:

_.extend(Backbone.history.navigate, {
linkClicked : function( bool ){
//handle link clicked
}
});

你可以用以下方式调用:

Backbone.history.navigate.linkClicked( true ); 
//or
Backbone.history.navigate.linkClicked( false );