marionette 如何将渲染视图附加到 DOM

How does marionette attach rendered views to the DOM

我有一个非常简单的设置 Marionette 我正在尝试开始工作。

我有一个集合视图:

var MyItemsView = Marionette.View.extend({
    template: "#some-template"
});

var view = new MyItemsView({
    collection: new Backbone.Collection([1,2,3,4,5])
});

模板直接嵌入我的HTML

<script id="some-template" type="text/html">
        <ul>
            <% _.each(items, function(item){ %>
            <li> <%= item %> </li>
            <% }); %>
        </ul>
</script>

我没有输出。

当我尝试使用 view.render() 时,我也没有得到任何输出。 当我登录 console.log(view.render().el) 时,我得到一个空的 <div> 我不明白这是怎么发生的?视图不应该使用提供的模板吗?

另一个更新。这将使用 ItemView 或 LayoutView 而不是 View 呈现...这里正在进行 wtf。

此示例直接取自 Marionette 网站。是不是我做错了什么?

从外观上看,它创建了一个内存中的视图。

您需要使用 el 选项告诉它您希望将此视图内容附加到何处,

否则你应该像

一样手动附加到DOM
$('body').append(view.el)

您使用的 Marionette 是什么版本?如果您使用的是 3.0.0 之前的任何版本(目前是 beta),您应该从 ItemView 而不是 View 从 Marionette 文档 (v2.4.5):

Note: The Marionette.View class is not intended to be used directly. It exists as a base view for other view classes to be extended from, and to provide a common location for behaviors that are shared across all views.

此行为在 v3.0.0 中发生了变化,ItemView 看起来好像已被删除。