在把手模板中运行JavaScript
我想在我的Handlebar模板中执行一些Javascript代码。通常在应用程序中我会这样做在把手模板中运行JavaScript,javascript,handlebars.js,Javascript,Handlebars.js,我想在我的Handlebar模板中执行一些Javascript代码。通常在应用程序中我会这样做 <script type="text/javascript"> var @Model.JavascriptVariableName; $(function () { @Model.JavascriptVariableName = new TagInput() .withAvailableTags(@Html.Raw(Model.Ava
<script type="text/javascript">
var @Model.JavascriptVariableName;
$(function () {
@Model.JavascriptVariableName = new TagInput()
.withAvailableTags(@Html.Raw(Model.AvailableTagsJson))
.withAppliedTags(@Html.Raw(Model.AppliedTagsJson))
.withMinCharsAutocomplete(@Model.MinCharsAutocomplete)
.allowBackspaceDelete(@Model.DeleteWithBackspace.ToString().ToLowerInvariant())
.allowNewTags(@Model.AllowNewTags.ToString().ToLowerInvariant())
.initialize($('#@Model.ElementId'), $('#@(Model.ElementId)_hidden'));
@if(Model.OnChangeJavascript.IsNotNullOrEmpty()) {
@:@(Model.JavascriptVariableName).onChange = function () { @Html.Raw(Model.OnChangeJavascript) }
}
});
</script>
上面的代码不起作用。除非您使用
handlebar
编译网页服务器端,否则我不明白为什么每次都需要等待窗口就绪事件:$(function(){})
事实上包装一个函数,以确保它只有在DOM就绪(已加载)时才会启动。
如果需要,您可以直接跳过代码中的该部分
我强烈反对将JS代码放在模板中:为什么不将该代码泛化,并使用handlebar编译一些可以在“泛型”函数中使用的ID或类的DOM内容
<script type="text/x-handlebars-template" id="tagsTemplate">
<div>Tags</div>
var @Model.JavascriptVariableName;
$(function () {
@Model.JavascriptVariableName = new TagInput()
.withAvailableTags(@Html.Raw(Model.AvailableTagsJson))
.withAppliedTags(@Html.Raw(Model.AppliedTagsJson))
.withMinCharsAutocomplete(@Model.MinCharsAutocomplete)
.allowBackspaceDelete(@Model.DeleteWithBackspace.ToString().ToLowerInvariant())
.allowNewTags(@Model.AllowNewTags.ToString().ToLowerInvariant())
.initialize($('#@Model.ElementId'), $('#@(Model.ElementId)_hidden'));
@if (Model.OnChangeJavascript.IsNotNullOrEmpty())
{
@:@(Model.JavascriptVariableName).onChange = function () { @Html.Raw(Model.OnChangeJavascript) }
}
});
</script>