【问题标题】:Extending Backbone functions while keeping base functionality在保留基本功能的同时扩展主干功能
【发布时间】:2014-03-07 23:49:50
【问题描述】:

我正在尝试在初始化函数中向 Backbone.View 添加一些处理功能,我希望将其转移到我的所有主干视图中。问题是,我正在使用 Marionette,所以我不能这样做:

var BaseView = Backbone.View.extend({})

因为 Marionette 扩展了 Backbone.View 本身。这是我想做的:

// Add processoring logic to an extended version of Backbone. 
Backbone.View.extend({
    initialize: function(options){
       if(options.hasOwnProperty("vents") {
         // process vents
       }

       // native code. Calling the library's actual original function to maintain original functionality.
       Backbone.View.initialize(this, aurguments);          

    }
})

var CollectionView = new Marionette.CollectionView({
     vents: {VentCallName: function(){}}
     // When initialize is called, it'll see the vents and deal with them automatically.
});

我只是不确定如何将功能添加到 Backbone.View,同时保持其中已有的任何功能逻辑。

编辑

如何在不创建新的扩展实例并将我的所有观点都基于此的情况下,将初始扩展功能实际导入 Backbone.View.initialize?我不能让 Marionette 使用那个扩展视图,所以额外的处理必须进入 Backbone.View 的初始化函数。

如果我这样做,它会自行循环:

Backbone.View.prototype.initialize = function(){
    console.log("moooo");
            // custom logic then run Backbone.View.initialize native code. 
    Backbone.View.prototype.initialize.apply(this, arguments);
}

【问题讨论】:

    标签: javascript backbone.js marionette


    【解决方案1】:

    Backbone.View.prototype.initialize.apply(this, arguments);

    编辑

    好的,这是一个稍微不同的问题。

    var oldInitialize = Backbone.View.prototype.initialize;
    Backbone.View.prototype.initialize = function(){
      console.log("moooo");
      // custom logic then run Backbone.View.initialize native code. 
      oldInitialize.apply(this, arguments);
    }
    

    【讨论】:

    • 谢谢你。这就是我一直在寻找的。跛脚不得不将它存储在一个 var 但如果它工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2017-08-06
    • 1970-01-01
    • 2011-06-04
    • 2012-07-25
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多