【问题标题】:How to pass variable into javascript template?如何将变量传递给javascript模板?
【发布时间】:2014-10-22 21:58:29
【问题描述】:

我尝试学习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!

但我看到init text

我做错了什么?

【问题讨论】:

    标签: javascript html templates user-interface frontend


    【解决方案1】:

    这里有很多错误。在发布问题之前,您应该学习查看您的 JavaScript 控制台并进行一些调试,因为错误太多以至于很难判断是什么导致了您的特定错误。

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

    2. 你用错了&lt;% %&gt;。如果你想为“world”变量插入“EARTH”的值,你需要类似于

      hello <%= world %>!
      

      实际上,使用&lt;% hello world %&gt;,您是在告诉模板调用一个名为hello 的函数和一个名为world 的变量。即使下面的 #3 已修复,您仍然会收到错误消息。

    3. 最后,也是最重要的,您有一个非常明显的语法错误。你的world: 'EARTH' 周围缺少{}。您的脚本块甚至不会解析,并且 JavaScript 控制台上应该有一个非常明显的错误,告诉您发生此语法错误的确切行。

    【讨论】:

    • 在发布问题之前,我对模板进行了很多修改。控制台有时会抱怨某些事情,有时-不会,但无论如何它都不起作用。谢谢你的正确答案。我对下划线一无所知,它是下划线。我在前端很糟糕。
    猜你喜欢
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2018-12-03
    • 1970-01-01
    • 2020-04-24
    • 2020-10-20
    相关资源
    最近更新 更多