在Marionette中,如何在 View 的父对象上调用同名函数而不覆盖原始函数?

例如:

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

产生控制台输出:
foo
bar

最佳答案

您可以使用 __super__ 设置的extend:

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

或直接引用您要在实例上应用的方法:
var anotherView = someView.extend({
    onRender: function () {
        someView.prototype.onRender.call(this);
        console.log('bar');
    }
});

有关更多信息,请参见Javascript Class Inheritance For Functionswhat .call() does

关于javascript - 在Marionette.js中调用父 View 的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24027419/

10-11 13:11