更新:最初の回答とわずかに同じ解決策を見つけました。しかし実際には、 RequireJS を使用して、ビューで特別な var またはパラメーターを使用せずにそれを行う方法があるかどうかを知りたいです。ここに私の解決策があります:
define(['resthub', 'backbone', 'views/myModule/parent-view', 'views/myModule/a-view'],
function(Resthub, Backbone, ParentView, AView) {
var ParentView = Backbone.View.extend({
// Stuff before
buildAView : function(aViewObject){
var aView = aViewObject || AView;
// Enought source code before and after those following lines
// that I don't want to duplicate in ChildView
this.aView = new aView();
this.aView.render();
}
// Stuff after
});
return ParentView;
});
コードの重複を避けるために依存関係が RequireJS によって管理されるバックボーン プロジェクトで最大限の継承を使用しようとしています。実際、ベース ビューを拡張する新しいビューを作成します。ベース ビューには、オーバーライドしたい依存関係があります。しかし、オーバーライドしようとしても、新しい依存関係ではなく、元の依存関係が取得されます。私は継承を余儀なくされていることに注意してください。
ここで私がやろうとしていること:
私が継承するベースビュー:
define(['resthub', 'backbone', 'views/myModule/parent-view', 'views/myModule/a-view'],
function(Resthub, Backbone, ParentView, AView) {
var ParentView = Backbone.View.extend({
// Stuff before
buildAView : function(){
// Enought source code before and after those following lines
// that I don't want to duplicate in ChildView
this.aView = new AView();
this.aView.render();
}
// Stuff after
});
return ParentView;
});
次に、作成しようとします。私が欲しいのは、buildAView() 関数が、a-view と同じソース コードを含まない b-view の AView という新しい依存関係を取ることです。
define(['resthub', 'backbone', 'views/myModule/parent-view', 'views/myModule/b-view'],
function(Resthub, Backbone, ParentView, AView) {
var ChildView = ParentView.extend({
// Stuff before
render: function() {
ParentView.__super__.render.apply(this, []);
/* some stuff inbetween*/
this.buildAView();
}
});
return ChildView;
});
ありがとう :)