Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何扩展Backbone.history.navigate?_Javascript_Html_Backbone.js - Fatal编程技术网

Javascript 如何扩展Backbone.history.navigate?

Javascript 如何扩展Backbone.history.navigate?,javascript,html,backbone.js,Javascript,Html,Backbone.js,调用Backbone.history.navigate时,我希望能够更改全局变量 我想把它设置好 window.linkclicked = true; // when someone clicks a link 及 有没有一种方法可以使用javascript原型实现这一点? 如何在“导航”方法中插入该逻辑?您可以使用下划线扩展功能: _.extend(Backbone.history.navigate, { linkClicked : function( bool ){ //handle li

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

我想把它设置好

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

有没有一种方法可以使用javascript原型实现这一点?
如何在“导航”方法中插入该逻辑?

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

_.extend(Backbone.history.navigate, {
linkClicked : function( bool ){
//handle link clicked
}
});
您可以通过以下方式进行调用:

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

您可以扩展
主干.history
实例,并根据需要重新定义函数

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);

可能重复的我想OP是询问如何使调用
Backbone.history.navigate
也会更改一个全局变量,而不是
Backbone.history.navigate
上的单独函数。好吧,我想我可以有一个包装器。
Backbone.history.navigate = (function(navigate) {
    return function(fragment, options) {
        /* ...snip ...*/
    }
})(Backbone.history.navigate);