javascript - 如何将变量传递到 JavaScript 模板中?

标签 javascript html templates user-interface frontend

我尝试学习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 控制台并进行一些调试,因为错误太多,很难判断是什么原因导致了您的特定错误。

  1. 不存在“JavaScript 模板”这样的东西。这是一个 Underscore 模板(或者在本例中为 lodash),它是一个库,根本不是 JavaScript 中内置的东西。

  2. 您正在使用<% %>错误的。如果你想为“world”变量插入“EARTH”的值,你需要类似的东西

    hello <%= world %>!
    

    事实上,<% hello world %> ,您告诉模板调用名为 hello 的函数有一个名为 world 的变量。即使下面的#3 已修复,您仍然会收到错误。

  3. 最后,也是最重要的,你有一个非常明显的语法错误。你失踪了{}在你身边world: 'EARTH' 。您的脚本 block 甚至无法解析,并且 JavaScript 控制台上应该有一个非常明显的错误,告诉您发生此语法错误的确切行。

关于javascript - 如何将变量传递到 JavaScript 模板中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26517831/

相关文章:

javascript - 如何解决错误: Document not attached to a Window?

javascript - 为什么我必须重新加载页面才能正确显示 map ?

javascript - Lodash 是否与 _.keys 相反?

html - 图像在 CSS 中对齐 ='middle'

html - 如何摆脱 html/css 中两个 div 之间的细线?

c++ - 检索对象的函数运算符的参数类型

javascript - 将可变长度数组传递给函数 Node JS

javascript - Foundation 6 change.zf.slider 事件未触发

c++ - 为什么 C++ 禁止这种部分特化?

c++ - 保存一个 'class',稍后实例化