underscore.js 嵌套模板

2024-01-09

是否有可能以某种方式从下划线模板中获取 DOM 元素并将其用作另一个模板?

我的想法是,我的应用程序需要呈现一个包含带有项目和摘要的循环的文档。我偶尔需要重新渲染摘要或几个项目,所以我不能只重新渲染整个文档。

但是,我希望应用程序用户能够简单地为文档创建自己的模板,并且我认为将文档的所有内容都保存在一个文件中会让事情变得更容易。

我正在尝试使用这样的东西:

<script type="text/template" id="document-template">
    <div id="document">
        <h1><%= name %></h1>
        <ul class="items">
            <% _.each(items, function(item) { %> 
                <li><%= item %></li>
            <% }); %>
        </ul>
        <div id="summary">
            <p>Total items: <%= totalitems %></p>
        </div>
    </div>
</script>

现在,我可以轻松地做到这一点documentTemplate = _.template($('#document-template').html());将其转换为文档模板,但我想将摘要部分转换为模板,并将列表项也转换为模板。

我可以做这样的事情吗:

var summaryTemplate = _.template($('#document-template #summary').html());
var itemTemplate = _.template($('#document-template .items li').html());

附言。实际上,我正在使用 jQuery 的 $.get 从外部文件加载模板。这样我就能在一个大字符串中获得文档模板。从那里,我可以做documentTemplate = _.template(loadedString);.

现在,如果我可以从字符串中提取 #summary 元素,它应该可以工作。但是当我尝试将字符串转换为 DOM 元素时(var domElement = $(loadedString)) (所以我可以这样做:summaryTemplate = _.template($('#summary',domElement).html());,它不起作用,因为下划线将不再识别 标签。


您可以将嵌套模板作为模板分配中的变量传递给主模板,例如:

HTML:

<script type="text/template" id="sub_template">
  <article>
    <h1>id: <%= id %><h1>
  </article>
</script>

<script type="text/template" id="main_template">
  <% for (var i = 0; i < num; i++) { %>
    <%= renderSub({id:i}) %>
  <% } %>
</script>

JS:

 var renderSub = _.template( $('#sub_template').remove().text() ),
     renderMain = _.template( $('#main_template').remove().text() );

  renderMain({num:5, renderSub:renderSub});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

underscore.js 嵌套模板 的相关文章

随机推荐

  • 即时将文件上传到 Azure Blob

    我正在尝试创建一个文件并将其放入 blob 中CloudBlockBlob UploadFromStreamAsync method 这是代码 private async void CreateCsvFile int recId using
  • Android OnLayout何时调用?

    我开发一个自定义View它延伸自ViewGroup 这意味着我需要实施onLayout方法 我认为当视图显示在屏幕上时会调用此方法 但我认为这是不对的 你能解释一下什么时候onLayout方法调用以及我需要在该方法中实现什么 它让我崩溃 因
  • 如何在选择选项的 HTML 标签中应用字体系列

    我正在应用字体系列
  • 从 ArrayNode 创建 Java 8 流

    是否可以创建流com fasterxml jackson databind node ArrayNode 我试过 ArrayNode files ArrayNode json get files Stream
  • 如何在 PDF 完全下载之前使其显示在网络浏览器中

    我有一个客户一直在努力解决网络上 pdf 文件加载缓慢的问题 我的客户有一些非常大的 pdf 文件 几乎有 10 Mb 下载它们需要 3 4 分钟以上 在加载整个文件之前 这些文件不会显示 我们和他们已经看到其他网站的 pdf 一次加载一页
  • topLevelAwait 对 babel-loader 无效:'await' 只允许在异步函数中使用

    webpack5支持topLevelAwait 只需添加以下选项 webpack config js module exports experiments topLevelAwait true 现在我们可以愉快地使用顶级等待 如下所示 im
  • 尽管启用了 kapt. CorrectErrorTypes,kapt 仍将生成的类引用替换为 error.NonExistentClass

    我有一个自定义注释处理器 大致执行以下操作 生成注释类型 使用此类型的类被推迟到后面的轮次 在后面的一轮中 使用这种类型处理类并为它们生成更多文件 到目前为止 这在 Java 中运行良好 但最近 我将一些类从 Java 转换为 Kotlin
  • Xcode 无法导入 tapku 或 kal 库

    我在导入 tapku 库 使用它提供的日历 api 时遇到问题 我也尝试过 Kal 遇到同样的问题 这是我导入它的方法 如果我遗漏了什么 请告诉我 使用 Xcode 4 5 转到文件 gt 将文件添加到项目 gt TapkuLibrary
  • .NET 7 Blazor MAUI - 需要使用 Azure 用户登录进行身份验证

    我正在开发 Blazor MAUI 应用程序 并且我试图要求组织中的用户使用其 Microsoft 工作帐户登录才能访问该应用程序 我在 Blazor MAUI 中找不到太多有关身份验证的文档 并且一直在努力寻找可行的解决方案 目前 我一直
  • Android:View.getTag/setTag 和 IllegalArgumentException

    是的 我知道在调用这些需要密钥的函数版本时 您需要一个唯一的资源 ID 但我一生都无法弄清楚如何创建可以这种方式使用的资源 ID 我的类中的最终变量不起作用 硬编码值也不起作用 两者都抛出了 IllegalArgumentException
  • 如何获取维基百科页面的所有链接及其维基数据 ID?

    什么时候 以下的事情可能实现 在单个查询 API 调用中获取维基百科页面上的所有链接及其各自的维基数据 ID 的列表 通过查询接收各个维基数据项的附加信息 例如属性值 要获取您必须使用的所有维基百科页面链接维基百科API https en
  • 如何从 PDF 中提取数据?

    我的公司通过 Excel 从外部公司接收数据 我们将其导出到 SQL Server 以运行数据报告 他们现在正在更改为PDF格式 有没有办法可靠地从PDF中移植数据并将其插入到我们的SQL Server 2008数据库中 这是否需要编写一个
  • 如何使用GCC将C代码编译为8088汇编?

    我一直在寻找一条信息 但似乎找不到它 也许你们可以帮助我 这是一个简单的问题 如何使用GCC将C代码编译成8088汇编 我正在用 8088 汇编语言编写一个小程序 想知道编译器是如何完成某些事情的 这真的很棒 Thanks djgpp 有一
  • 如何在 Python 中创建 Socket.io 客户端以与 Sails 服务器通信

    我正在运行一个SailsJS我有一个控制器的实例 v0 12 3 我的模型控制器处理 WebSocket socket io 如果用户已通过身份验证 则允许连接 我的模型控制器 module exports Socket connectio
  • 如何使 VS2010 优先选择一个包含目录而不是另一个?

    我正在尝试使用XInput h来自 DirectX SDK 的文件 但此文件也存在于 Windows SDK 中 并且它是该文件的不同变体 我尝试过添加 DXSDK DIR Include 到在项目设置中包含目录 之前和之后 Include
  • 保持分支与 master 保持同步

    我有一个远程存储库 我已从该存储库中提取并从中分支 我想让新分支与 master 所做的更改保持同步 我正在考虑下面的工作流程 它是否有意义或者是否有更好的方法来做到这一点 初始分支和结账 git checkout master git p
  • 未定义的偏移量:1

    在我当前的 PHP 脚本中出现此错误 未定义的偏移量 1 我的代码在这里 query SELECT item id username item content FROM updates ORDER BY update time DESC L
  • 有没有办法在Android中使用Paging Library 3.0实现基于光标的分页?

    我正在使用一个 REST API 它使用基于游标的分页来显示一些结果 我想知道我是否可以使用分页库3 0 https developer android com topic libraries architecture paging v3
  • C++17:使用通用可变参数 lambda 包装可调用对象

    我想将任何类型的可调用对象 例如 lambda 透明地包装在另一个可调用对象中以注入附加功能 包装器的类型应与原始可调用对象具有相同的特征 相同的参数类型 相同的返回类型 完美转发传递的参数 在 SFINAE 构造中使用时具有相同的行为 我
  • underscore.js 嵌套模板

    是否有可能以某种方式从下划线模板中获取 DOM 元素并将其用作另一个模板 我的想法是 我的应用程序需要呈现一个包含带有项目和摘要的循环的文档 我偶尔需要重新渲染摘要或几个项目 所以我不能只重新渲染整个文档 但是 我希望应用程序用户能够简单地