我觉得你最好把手风琴留在一个视图上,然后在每个面板里面都有独立的视图。毕竟,<h2>
是整个手风琴的控制器,而不是特定的面板。
你最好有一些每个小组的观点是这样的:
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/
您可以使用$(“选择”),而不是指定一个标签名选择元素。 – McGarnagle