2012-04-10 20 views
8

の拡張私が見るにはMYVIEWと呼ばれるバックボーンを作成しました。私の見解では、たくさんのカスタム関数を作成しました。私が抱えている問題は、がMyViewを拡張する新しいバックボーンビューを作成する必要があることです。</p> <pre><code>Backbone.View.extend </code></pre> <p>を使用したカスタムバックボーンビュー

新しいビューを作成してコードを複製したくない...機能を拡張するために継承を利用したいだけです...問題は私がそれを正確に行う方法を知らないことですスーパーの機能をバックボーンに呼び出す方法がわかりません。

*編集 - 下のいくつかの回答に感謝しますが、親のメソッドを呼び出す方法はまだよく分かりません。例えば:私はあなたが探しているものだと思い

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

答えて

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

+0

のが、どのように私は親のメソッドを呼び出すでしょうか? – K2xL

+0

私があなたに従っているかどうかわかりません... MyViewにメソッドdoSomething()があり、MyViewを拡張してNewViewを作成すると、NewView.doSomething()を呼び出すことができるはずです。 –

+0

上記の編集を参照してください – K2xL

0
var newView = MyView.extend() 

+0

完璧ですが、どのように私は親メソッド/関数をオーバーライド関数の中で呼び出すでしょうか? – K2xL

0

私はこれがどのように便利知っているが、もししていません

class BaseView extends Backbone.View 

class MyView extends Baseview 

それは、この生成します:あなたはこのCoffeeScriptのコンパイル入る私が見

(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); 
+12

私の目を滲ませる神 – tkone

+0

@tkone確かに、coffeescriptを見てください:) – asawyer

+3

thats私が言及していたものです! :) – tkone

7
var SubView = MainView.extend({ 

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

}); 
関連する問題