我尝试学习js模板并编写了以下页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/0.9.0/lodash.js"></script>
</head>
<body>
<div id="helloDiv">init text</div>
<script type="text/template" id="test">
<% hello world %>!
</script>
<script>
$('#helloDiv').html(
_.template( $('#test').html().trim(),world : 'EARTH')
);
</script>
</body>
</html>
预期行为:我想看到hello EARTH!
但我看到初始化文本
我做错了什么?
最佳答案
这里有很多错误。在发布问题之前,您应该学会查看 JavaScript 控制台并进行一些调试,因为错误太多,很难判断是什么原因导致了您的特定错误。
不存在“JavaScript 模板”这样的东西。这是一个 Underscore 模板(或者在本例中为 lodash),它是一个库,根本不是 JavaScript 中内置的东西。
您正在使用
<% %>
错误的。如果你想为“world”变量插入“EARTH”的值,你需要类似的东西hello <%= world %>!
事实上,
<% hello world %>
,您告诉模板调用名为hello
的函数有一个名为world
的变量。即使下面的#3 已修复,您仍然会收到错误。最后,也是最重要的,你有一个非常明显的语法错误。你失踪了
{}
在你身边world: 'EARTH'
。您的脚本 block 甚至无法解析,并且 JavaScript 控制台上应该有一个非常明显的错误,告诉您发生此语法错误的确切行。
关于javascript - 如何将变量传递到 JavaScript 模板中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26517831/