扩展自定义骨干视图

时间:2012-04-10 17:11:50

标签: javascript backbone.js

使用

Backbone.View.extend

我创建了一个名为 MyView 的Backbone View。在我看来,我创建了一堆自定义函数。我遇到的问题是我需要创建一个新的Backbone视图扩展MyView

我不想创建一个新的View和重复的代码...我只是想利用继承来扩展功能......问题是我不知道如何做到这一点,我也不知道我不知道如何在Backbone中调用超级函数。

*编辑 - 感谢下面的一些答案,但仍不太确定如何调用父方法。例如:

// in subView
{
initialize: function(){
// would like to do something like super.initialize()
 // here i would then declare variables exclusive to subview
}

4 个答案:

答案 0 :(得分:14)

我认为您正在寻找的是:

 var NewView = MyView.extend({
     //Usual config goes on in here, and it will have inherited functions
     //And default properties from MyView
 });

或者,如果你想调用超类,那么这里有一个实现: http://forrst.com/posts/Backbone_js_super_function-4co

答案 1 :(得分:7)

var SubView = MainView.extend({

    initialize: function(options) {
        this.constructor.__super__.initialize.apply(this);
    }

});

答案 2 :(得分:0)

var newView = MyView.extend()

答案 3 :(得分:0)

我不知道这是多么有用,但如果你输入编译这个coffeescript:

class BaseView extends Backbone.View

class MyView extends Baseview

它产生了这个:

(function() {
  var BaseView, MyView,
    __hasProp = Object.prototype.hasOwnProperty,
    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; };

  BaseView = (function(_super) {

    __extends(BaseView, _super);

    function BaseView() {
      BaseView.__super__.constructor.apply(this, arguments);
    }

    return BaseView;

  })(Backbone.View);

  MyView = (function(_super) {

    __extends(MyView, _super);

    function MyView() {
      MyView.__super__.constructor.apply(this, arguments);
    }

    return MyView;

  })(Baseview);

}).call(this);