Pergunta

No Marionette, como posso chamar uma função de mesmo nome no objeto pai de uma visualização sem substituir a função original?

Por exemplo:

var someView = new Backbone.Marionette.ItemView.extend({
    onRender: function () {
        console.log('foo');
    }
});

var anotherView = someView.extend({
    onRender: function () {

        // call someView's original onRender function

        console.log('bar');
    }
});

anotherView.render();

Resultando na saída do console:

foo
bar
Foi útil?

Solução

Você pode usar __super__, que é configurado por extend:

var anotherView = someView.extend({
    onRender: function () {
        this.__super__.onRender.call(this);
        console.log('bar');
    }
});

ou apenas faça referência direta ao método que você deseja aplicar em sua instância:

var anotherView = someView.extend({
    onRender: function () {
        someView.prototype.onRender.call(this);
        console.log('bar');
    }
});

Para mais informações, veja Herança de classe Javascript para funções e o que .call() faz.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top