如何将Backbone.Marionette视图附加到现有元素而不创建额外的元素

7

假设我有这两个Backbone.Marionette视图:

var FooView = Backbone.Marionette.ItemView.extend({
  tagName: p,
  id: 'foo',
  template: this.templates.summary
});

var BarView = Backbone.Marionette.ItemView.extend({
  template: this.templates.summary
});

然后我想将它们显示在应用程序区域内,如下所示:

App.contentRegion.show(new FooView/BarView());

第一种方法会创建一个新的

元素并将其附加到区域中。我认为第二种方法更像是标准的Backbone视图,它会将自己附加到区域而不创建一个新的元素,但它会将其包装在一个

标签中。有没有一种方法可以避免这种情况,而不使用类似setElement()的东西?

1个回答

6

1
谢谢。我看过那个方法,但不确定为什么要附加一个视图而不显示它(实际上,这是一个好的子问题 - 有人能给出一个用例吗?)。我稍微尝试了一下,感到很沮丧,因为我无法让它工作,直到我意识到你必须在附加后显示该视图。这里是一个 jsFiddle 演示 - http://jsfiddle.net/tonicboy/q8Le4/ - T Nguyen
2
通常情况下,您会将视图附加到已经显示的HTML上(即,使用JavaScript行为增强现有元素)。您可以在我的旧教程中看到一个示例,链接在这里:http://davidsulc.com/blog/2012/05/06/tutorial-a-full-backbone-marionette-application-part-1/。Derick在这里也有一篇关于渐进式增强的有趣文章:http://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushstate-part-2-progressive-enhancement-with-backbone-js/,讨论了相同的概念。 - David Sulc
如果我通常使用控制器来实例化视图并在区域上调用show()来显示这些视图,那么让控制器也执行attachView是否是可取的?如果是的话,那么如果需要在应用程序启动时执行此操作,它将在什么时候发生? - kinakuta
@DavidSulc 好的,那很有道理,但如果我想要附加一个CollectionView实例,似乎并不那么简单。每个项目视图如何正确附加到该集合视图的各个部分?我需要覆盖某些内容才能使其正常工作吗? - kinakuta
很遗憾,这个函数似乎已经被Marionette v3移除了。 - CodingWithSpike
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接