把手 - 预编译模板中的脚本不会运行

时间:2015-06-04 16:04:27

标签: javascript handlebars.js

我有一个预编译的把手模板。我只是将html发送给我(正常情况下),但我决定在将其插入DOM时包含要执行的脚本。但是,我还没有能够让脚本运行。

当他们的车把模板没有预先编译时,很多人似乎遇到过这个问题,但是我还没有看到很多问题都是预编译的。

这是我的.hbs文件的基本结构:

<div>
    <h1>{{title}}</h1>
</div>
<script>
    // please do something
    alert('Executing the script');
</script>

我将把手注入DOM并且该部分正在工作(注入了html并且变量已经设置好)。但是,脚本永远不会执行。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

正如我之前在评论中提到的那样,你不能直接在Handlebars模板中添加脚本。

您可以创建新的HTML标记,您将动态地将其视为可以执行您要执行的工作的代码。例如:

<div data-handlebars-script="example-stack-overflow"></div>

<example-stack-overflow />

(我更愿意采用更标准的方式 - 第一种方式)。

在渲染模板后,您可以使用例如jQuery的。

$('div[data-handlebars-script="example-stack-overflow"').each(function() { 
  // Do your stuff here
});

修改

让我一边发表评论。如果你需要做这样的事情,那可能表明你的设计存在某些缺陷。