我浏览了布局视图中的所有牵线木偶文章,我不确定使用它与使用我的应用程序设置有什么好处,让我告诉你。
在将组件构建到我的应用程序之后,我创建了一个应用程序级视图,用于处理所有这些视图的初始化和重新发送。
var Backbone = require('backbone'),
TeamsView = require('./teams'),
DataView = require('./teamData'),
LeaderView = require('./leader');
module.exports = appView = Backbone.View.extend({
el: '#wrap',
template: require('../../templates/app.hbs'),
initialize: function() {
window.App.views.teamsView = new TeamsView({ collection: window.App.data.teams });
window.App.views.dataView = new DataView({ collection: window.App.data.teams });
window.App.views.leaderView = new LeaderView({ collection: window.App.data.teams });
},
render: function() {
var teamsView = window.App.views.teamsView;
var dataView = window.App.views.dataView;
var leaderView = window.App.views.leaderView;
this.$el.find('#basketball .app').prepend(teamsView.render().el);
this.$el.find('#basketball .app').prepend(dataView.render().el);
this.$el.prepend(leaderView.render().el);
}
});
然后在控制器内部我渲染上面的应用程序视图。
这对我来说很舒服,但是内心深处说错了,我应该看布局视图?
所以我的问题更具体地说,当我将主题应用程序中的各个部分放在一起时,我应该查看布局视图还是创建单个应用程序级别视图(如上所述)?
答案 0 :(得分:2)
你所做的事情在最简单的层面上是好的,尽管可能比它需要更多的手动。但是,您可能需要布局视图,因为事情会变得更复杂。
如果您的应用中有一个区域,您希望包含子区域,但仅在某些视图中,则会显示布局视图的值。例如,您的应用#mainRegion
内部可能有一个索引/列表,其中只有一堆团队,在这种情况下,您可以使用CollectionView
(或CompositeView
如果您愿意为每个团队添加一些样式)和ItemView
。
但是,如果您点击编辑其中一个小组,现在您希望#mainRegion
显示编辑页面,该页面本身包含#infoRegion
中有关该小组的一些信息,然后是编辑表单在#formRegion
中。这些是特定于编辑页面的区域,因此您需要使用布局视图来管理它们,而不是一直委托给应用程序级别。
我希望这是有道理的,如果需要,我很乐意澄清。您还可以查看文档,了解何时使用每种视图类型的细分:https://github.com/marionettejs/backbone.marionette/wiki/Use-cases-for-the-different-views