如何在hbs中呈现JS函数?

时间:2018-02-21 14:51:03

标签: javascript node.js handlebars.js

我正在尝试使用把手在我的网站上实现谷歌登录功能。

我希望将我的脚本包含在文件中并在https://apis.google.com/js/api:client.js?加载时加载它,因为它会创建一个我在gapi中使用的对象js

问题是把手没有任何帮助来加载js文件。 我尝试使用帮助程序,但问题是gapi在注册的帮助程序中未定义,因为在加载客户端库时加载了gapi

我试过

<script src="https://apis.google.com/js/api:client.js?onload=after_load"></script>
<script>
function after_load(){     
{{helper_name gapi}}
}
</script>

但仍然存在错误,有没有办法在hbs中加载js文件?或者我只需将我的代码放在脚本标签本身?

1 个答案:

答案 0 :(得分:2)

在我看来,你把车把与别的东西混淆了。 而不是做这样的事情尝试做这样的事情:

  • 通常在你的HTML中加载你的api。
  • 一旦加载,你可以调用你的车把部件(例如jquery有一个很好的就绪功能)。
  • 处理完车把结果后,将其注入你的html。
  • 如果您需要启动另一个脚本,那么之后再执行

以下是一个例子:

&#13;
&#13;
$(document).ready(function () {
  var context = { "form" : "<div class='input-container'><div class='label'>User :</div><div class='input'><input type='text' id='username' name='username'></div></div><div class='input-container'><div class='label'>Password :</div><div class='input'><input type='password' id='password' name='password'></div></div>" };
	var source   = $("#sourceTemplate").html();
  var template = Handlebars.compile(source);
  var html    = template(context);
  $("#resultPlaceholder").html(html);
  alert("Load is done place your additional scripts calls here");
});
&#13;
.input-container { display: inline-block; }
.label { float: left; width: 100px;}
.input { float: left; width: 300px;}
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.js"></script>
<script src="https://apis.google.com/js/api:client.js?onload=after_load"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script id="sourceTemplate" type="text/x-handlebars-template">
<div class="container">
  {{{form}}}
</div>
</script>
<br/>
<div id="resultPlaceholder">
</div>
&#13;
&#13;
&#13;