Как продлить Backbone.history.navigate?

Когда я вызываю Backbone.history.navigate, я хочу иметь возможность изменять глобальную переменную.

Я хочу установить

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

а также

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

Есть ли способ сделать это с использованием прототипов javascript? Как вставить эту логику в метод "навигации"?

0
источник поделиться
2 ответа

Вы можете расширить экземпляр 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);
0
источник

Вы можете расширить функциональность с помощью подчеркивания:

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

Вы можете позвонить:

Backbone.history.navigate.linkClicked( true ); 
//or
Backbone.history.navigate.linkClicked( false );
-1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос