使用
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
}
答案 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);