在CompositeView - Marionette中传递ItemView的DOM位置

DOM location of ItemView when passed in CompositeView - Marionette

本文关键字:ItemView DOM 位置 CompositeView Marionette      更新时间:2023-09-26

我有一个这样的ItemView:

var Userview= Marionette.ItemView.extend({
        template: "#user1",
        el: "#imp1"    
});

问题:这是否意味着ItemView的模板:#user1将进入(说)div与id=imp1在DOM,当渲染?

(如果没有,那么我想我可以使用区域来渲染Userview在DOM中的某个div,所以它很好!)

现在,在渲染CompositeView的情况下,我使用Region1.show()代替CompositeView。在这种情况下,我如何在DOM中的特定位置(例如带有id的div)呈现CompositeView的(childView) ItemView

(因为我在CompositeView上调用Region1.show()而不是在ItemView上,我不知道如何在DOM上的特定位置渲染ItemView)

如果ItemView是CompositeView的子元素,那么不能DOM中的特定位置呈现它。你只能在CompositeView(childViewContainer) 中的特定位置上渲染,并且CompositeView将通过一个区域直接渲染到DOM中。

所以,如果你想在DOM中的特定位置呈现一个ItemView,你应该只使用Region和ItemView,而不使用compositeView。

var myView = new MyView();
myRegion.show(myView);

所以,诀窍是在CompositeView定义中定义childViewContainer: "#some_id"。它将定义(childView) itemView的位置。

此外,在CompositeView中使用itemView会导致错误,我们需要使用
childView: child_view_name