动词样式模板如何在牵线木偶中工作

How do erb-style templates work in marionette?

本文关键字:工作 样式      更新时间:2023-09-26

关于木偶的文档。ItemView,你可以找到这个模板:

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

要调用这个模板,我们使用如下命令:

var MyItemsView = Marionette.ItemView.extend({
  template: "#some-template"
});
我使用这种模板,它工作得很好,但我不明白它是如何工作的。大多数情况下,我不明白的是如何在不使用脚本标记的情况下复制上述内容。请看下面的尝试:

var MyItemsView = Marionette.ItemView.extend({
  template: function (items) {
    return _.template("<ul><% _.each(items, function (item) { %><li><% item.someAttribute %></li><% }); %></ul>");
  }
});

有人能解释一下这是如何工作的,items对象来自哪里?

大多数情况下,我不明白的是如何在不使用脚本标签的情况下复制上面的内容。

模板是一个字符串,Underscore知道如何将其解析为函数。如果你想把你的模板从脚本标签中移出来,你可以把它们移到它们自己的文件中并预编译,或者如果你使用require .js,使用text插件将它们作为依赖项。

…items对象从何而来?

从木偶ItemView文档:

这里需要注意的重要一点是,使用items作为变量在_中迭代。每一个电话。这将永远是变量,包含集合的项。