将 Handlebars.js 预编译模板与 KnockoutJS 结合使用

问题描述 投票:0回答:2

步骤

  1. 添加了运行时把手
    handlebars.runtime.js
  2. Html参考:
    <tbody data-bind="template: { name: 'HtmlTemplates/Passos/rowPassos.html', foreach: Passos }"></tbody>
  3. 控制台错误 未捕获错误:找不到 ID 为 HtmlTemplates/Passos/rowPassos.html 的模板

Knockoutjs with handlebars.js

出现该错误是因为 Knockoutjs 本身无法与 Handlebars 配合使用。 问题是,如何将预编译模板(handlebars.js)与knockoutjs一起使用?

knockout.js handlebars.js knockout-2.0
2个回答
0
投票

有点晚了,但我想迟到总比不到好。

Knockout 适用于模板 ID。 (

<script id=".."></script>
) 不适用于 HTML 文件。我个人没有使用车把的经验,所以我无法对此发表评论。

但是,您似乎正在使用预编译,所以我猜这些 HTML 文件位于服务器上,而不是内联。

因此,您应该使用外部模板。我也在用它,效果很棒。

在你的情况下,你不应该给它

HtmlTemplates/Passos/rowPassos.html
,你应该给KnockOut
HtmlTemplates/Passos/rowPassos
(所以没有.html),外部模板应该为你获取它。


0
投票

如果您已经预编译了车把模板,那么您可以继续使用

html
中的
ko
数据绑定。

类似这样的:

var myTemplate = Handlebars.compile('<span class="strong {{#is option optimalValue}}ok{{else}}bad{{/is}}">SOMEVALUE</span>');
<span data-bind="html: myTemplate({option:5, optimalValue:4})"></span>
© www.soinside.com 2019 - 2024. All rights reserved.