【问题标题】:How can I extend Backbone.history.navigate?如何扩展 Backbone.history.navigate?
【发布时间】:2015-05-09 11:20:53
【问题描述】:

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

我要设置

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

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

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

【问题讨论】:

标签: javascript html backbone.js


【解决方案1】:

您可以扩展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);

【讨论】:

    【解决方案2】:

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

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

    你可以这样调用:

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

    【讨论】:

    • 我认为 OP 正在询问如何做到这一点,以便调用 Backbone.history.navigate 也会更改全局变量,而不是 Backbone.history.navigate 上的单独函数。
    • 好吧,我想我可以有一个包装。
    猜你喜欢
    • 1970-01-01
    • 2014-01-11
    • 2017-01-14
    • 1970-01-01
    • 2020-06-22
    • 2018-08-22
    • 2011-06-09
    • 2010-10-09
    • 2014-01-28
    相关资源
    最近更新 更多