在把手模板中运行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

我想在我的Handlebar模板中执行一些Javascript代码。通常在应用程序中我会这样做

<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>