我想在我的车把模板中执行一些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>
但是因为我已经在一个把手模板里面了,所以我试图插入$(function(){})
只是作为有意义的文本吐出来的<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>
。那么如何在把手内部创建一些动态Javascript ???
{{1}}
上述代码无效。
答案 0 :(得分:1)
除非您使用handlebar
编译网页服务器端,否则我不明白为什么每次都需要等待window Ready
事件:$(function(){})
实际上包裹了一个函数,以确保它只有在DOM准备好(已加载)时才会触发。
如果需要,您可以在代码中跳过该部分。
我强烈反对将JS代码放在一个模板中:为什么不对这些代码进行概括,并使用Handlebars编译一些带有id或类的DOM东西,你可以在你的&#34;泛型&#34;功能改为?