【发布时间】:2023-01-30 03:38:23
【问题描述】:
当我使用 handlebars.js 将值设置为输入类型 =“数字”标签时,我收到警告。
模板的html是:
<input id="i-f" type="number" class="form-control full-width" value="{{m_f}}" />
我传递了以下值:
objname = {
m_f: 3
}
加载车把模板后,控制台会显示此警告:
指定的值“{{m_f}}”无法解析,或者超出范围。
我已经尝试使用和不使用双引号 (") 和第三个大括号来设置值,但没有任何变化。我不明白我哪里做错了。
即使出现此警告,该值也已设置正确,但我该如何解决?
我正在使用 handlebars 4.7.7 和 jquery 2.2.4
对不起,我的马铃薯英语 :P,我希望我说的很清楚。谢谢!
编辑
车把模板的调用是:
内置功能
LoadDeviceTemplate(options.data, selector, options.templateURL, true, options.selector, false);那次跑步:
var template = GetHBTemplate(urlHtml, innerSelector);.html 文件的 ajax 调用在哪里运行
$.ajax({ async: false, url: urlHtml + "?ts=" + daysfromepoch cache: true, success: function (data) { var $d = $(data); var scriptid = null,scriptSelIsPresent = 0 ,onlyScriptSel=0; if ($d.is("script[type='text/x-handlebars-template']")) { scriptid = $d.filter("script").attr("id"); if ((innerSelector + " ").indexOf("#" + scriptid + " ") == 0) { scriptSelIsPresent = 1; if (innerSelector.length == scriptid.length + 1) onlyScriptSel=1; } if (scriptSelIsPresent) { if (onlyScriptSel) { shtml = $d.text(); return; } innerSelector = innerSelector.substring(("#" + scriptid + " ").length); } $d = $($d.text()); } var $f = $d.filter(innerSelector); if ($f.length > 0) { if ($f.attr("type") == "text/x-handlebars-template") shtml = $f.html(); else shtml = $f[0].outerHTML; } else { var complexSelector = innerSelector.indexOf("=") >= 0; var arr = innerSelector.split(" "); var id = arr.shift(); if (!complexSelector && arr.length > 0 && $d.filter(id).length) shtml = $($d.filter(id).html()).find(arr.join(" "))[0].outerHTML; else shtml = $d.find(innerSelector)[0].outerHTML; } } });运行“$d = $($d.text());”行时出现警告
【问题讨论】:
-
我们可以看到调用模板函数的代码吗?
-
@76484 嗨,我刚刚更新了线程。您需要更多信息吗?
-
谢谢。什么是
LoadDeviceTemplate和GetHBTemplate?这些功能是您创建的吗? -
有很多继续在这里,我发现很难理解。最重要的是,我看不到您的 Handlebars 模板函数是在哪里编译的 (
Handlebars.compile)。所以我不清楚这里是否使用了 Handlebars。 -
@76484 抱歉,伙计,我忘了复制粘贴 GetHBTemplate 的最后一行,即:return Handlebars.compile(shtml);返回的模板将使用此命令在 LoadDeviceTemplate 中完成 $(selector).append(template(dev)); dev 是具有要放入车把模板中的值的对象我希望这次我没有忘记其他东西
标签: javascript jquery handlebars.js