8

使用

Backbone.View.extend

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

我不想创建新的视图和重复代码...我只想利用继承来扩展功能...问题是我不知道确切的方法,我也不知道如何调用 Backbone 中的超级函数。

*编辑 - 感谢下面一些人的回答,但仍然不太清楚如何调用父母的方法。例如:

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

4 回答 4

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

于 2012-04-10T17:21:42.200 回答
7
var SubView = MainView.extend({

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

});
于 2012-11-14T02:25:19.063 回答
0
var newView = MyView.extend()

于 2012-04-10T17:21:47.517 回答
0

我不知道这有多有用,但如果你输入编译这个咖啡脚本:

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);
于 2012-04-10T17:22:28.680 回答