在Backbone.Marionette中,布局视图扩展了项目视图,因此它具有UI元素并可以处理模型。但是从语义上讲,将模型分配给布局视图并将UI元素绑定到它是否具有哲学上的正确性?或布局应该只有区域和模板?
答案 0 :(得分:1)
TL; DR 我相信Marionette的理念是尽量减少语义。 Marionette.View中定义的方法选择由所有Marionette视图继承。虽然所有派生的Marionette观点在他们设计的内容方面都更好,但它们仍然是Marionette.View。
截至本文发布之日,我每天都在一个企业项目上使用Marionette超过一年。我努力在社区中保持活跃,并随时了解Marionette的发布。
根据我的经验,Marionette对如何构建和操纵视图提出了意见,但它有意识地试图保持其观点尽可能灵活和通用。也就是说,请看issue,其中@jmeas
(一位主要的Marionette贡献者和有远见的人)设想将Marionette减少为LayoutViews和CollectionViews!
我认为您问题的最佳答案是,如果您认为该方法可以在本地使用,那么这不是一个意外。 Marionette View继承结构已经过严格测试。我还没有看到任何衍生视图中的方法与该视图的语义相矛盾。
更新我认为有必要指出在LayoutView模板中呈现模型存在潜在的主要警告。
考虑这种情况。您有一个带有模型的LayoutView,以及至少一个区域。您还.show()
在LayoutView的区域中的子视图。现在,LayoutView中的数据在不同的视图中更新,并且您希望动态更新LayoutView。如果再次 渲染 布局视图,那么整个视图将被丢弃,包括渲染的子视图,需要再次渲染子图。
在某些情况下,这可能会对性能产生重大影响。并且可能存在其他问题,具体取决于在LayoutView中最初处理子视图的方式。
答案 1 :(得分:0)
在布局视图中使用模型绝对是正确的。我可以想到它可能有用的各种用例: