【问题标题】:Extending Backbone Views扩展主干视图
【发布时间】:2014-01-16 13:10:09
【问题描述】:

我搜索了很多,但找不到合适的答案。 我正在尝试覆盖 Marionette CompositeView 中定义的函数。我用一个新类扩展了复合视图,该类的函数应该覆盖默认值,一切都按预期工作,但问题是父/原始类(ClassA)仍然调用旧函数而不是新函数(ClassB)

var ClassA = Backbone.Marionette.CompositeView.extend({
    initialize: function(){
        this.onValueAdded();
        // now the onValueAdded of ClassB should be called, or at least this is what im trying to accomplish
    },
    onValueAdded: function () {

    }
});

var ClassB = ClassA.extend({
    onValueAdded: function () {
        alert('this should get fired');
    }
});

【问题讨论】:

  • 我刚才在本地尝试了这个,如果我这样做new ClassB(),那么ClassB 中定义的onValueAdded 函数会按预期调用。当我做new ClassA() 时,ClassA 中的那个会被调用。你能用小提琴来说明这个问题吗?
  • 当然ClassA 会调用ClassA#onValueAddedClassA 不知道它的子类ClassBB = A.extend({...}) 不会以任何方式改变A(当然@987654335 @ 是 Backbone 的“子类化”extend 而不是 _.extend$.extend)。您是否真的在尝试修补 ClassA 以将其 onValueAdded 替换为您自己的补丁?
  • 是的,这正是我想要做的。我正在尝试用我自己的另一个完全替换 onValueAdded。没有任何旧的触发事件来调用旧的(ClassA)函数
  • 我只是能够使用您提供的代码获得您正在寻找的结果。你能包括你用来实例化的代码吗?

标签: backbone.js marionette


【解决方案1】:

当我实例化 ClassB 时,我得到了正确的警报('这应该被解雇')

var c = new ClassB();

http://jsfiddle.net/M5J8Q/1380/

【讨论】:

    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多