アコーディオンを1つのビューに残してから、各パネル内に個別のビューを配置する方がよいと思います。結局のところ、<h2>
sは、特定のパネルではなく、アコーディオン全体のコントロールです。
次のようなパネルごとのビューがあります。
var P = Backbone.View.extend({
render: function() {
// Add the panel's content to this.$el (which is a <div> by default).
return this;
}
});
そして、次のようなアコーディオンビュー:
var A = Backbone.View.extend({
render: function() {
var panels = [ ... ];
for(var p, i = 0; i < panels.length; ++i) {
p = new P({ ... });
this.$el.append('<h3><a>' + panels[i] + '</a></h3>');
this.$el.append(p.render().el);
}
// The accordion wants to know the sizes of things so
// we let the DOM sort itself out before binding the
// accordion.
var _this = this;
setTimeout(function() { _this.$el.accordion() }, 0);
return this;
}
});
そうすれば、簡単$('#something').append((new A).render().el)
にできます。すべてを適切な場所に残しながら、すべてがうまく機能します。
ビューにtitle
メソッドを追加してから、その名前/タイトル/ヘッダーをパネルに尋ねて、パネルごとのすべての情報がパネルごとのビューに適切に含まれるようにすることもできます。P
A
デモ: http: //jsfiddle.net/ambiguous/Y49W8/