EDIT my humble mockup of what I want to implement
我定义了这样一个 View :
define(['jquery', 'underscore', 'backbone', 'text!_templates/gv_container.html', 'bootstrap/bootstrap-tab'],
function($, _, Backbone, htmlTemplate, tab) {
var GridViewContainer = Backbone.View.extend({
id: 'tab-panel',
template: _.template(htmlTemplate),
events: { 'click ul.nav-tabs a': 'tabClicked' },
tabClicked: function(e) {
e.preventDefault();
$(e.target).tab('show');
},
render: function() {
this.$el.append(this.template);
return this;
}
});
return GridViewContainer;
}); // define(...)
View 的模板如下所示:
<ul class="nav nav-tabs">
<li class="active"><a href="#products">Products</a></li>
<!-- other tabs -->
</ul>
<div class="tab-content">
<div class="tab-pane active" id="products">
<!-- table with rows like { title, few more properties, edit|remove links } -->
</div>
<!-- other panes ... -->
</div>
最初我想我可以使用它(一次作为所有集合的通用模板)。
目标
我有三个集合:产品
、类别
、订单
。我想将它们作为表格插入到单独的 tab-pane
中。至于将模型传递给 GridViewContainer
我想我可以将它们包装在 composite model
中并将后者作为 options
对象的一部分传递给GridViewContainer
View 。下一步是什么?
Product
、Order
、Category
模型具有不同的属性、不同的编辑形式和可能的事件处理。这带来了特异性。我应该为每个集合使用 [EntityName]ListView
,然后将其附加到 GridViewContainer
View 吗?
ASIDE I use
jquery.js
,underscore.js
,backbone.js
,require.js
, andASP.NET MVC 4
on server side. I don't useMarionette.js
最佳答案
我建议为每个模型创建一个 View 。 您可以创建一个抽象来保存共享的东西,比如表创建。 每个 View 都扩展了您的抽象而不是 Backbone.View。
var myAbstract = Backbone.View.extend({...})
var productsView = myAbstract.extend({...})
然后创建一个 View ,处理包装器(选项卡)。
关于javascript - 实现具有多个集合的主视图。主干网.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16518034/