我一直在玩淘汰网站上的教程,并乐于使用它。
所以我决定用它制作一个简单的网站。我很遗憾地注意到在使用javascript模板时,我失去了IDE的大量支持(突出显示,代码完成)
示例模板:
<script type="text/html" id="taskTemplate">
<li>
<input type="checkbox" data-bind="checked: isDone" />
<input data-bind="value: title, enable: !isDone()" />
<a href="#" data-bind="click: remove">Delete</a>
</li>
</script>
这是你必须吞下的东西还是可以避免/可修复的东西? 模板似乎是构建页面最常用的方法之一,所以我更愿意得到IDE的支持。
答案 0 :(得分:9)
为了解决这个问题,我创建了两个html助手,用于开始我的脚本标记和脚本标记的结尾。类似的东西:
<% Html.BeginTemplate(new { id = "features-template" }); %>
<li>
<input type="checkbox" data-bind="checked: isDone" />
<input data-bind="value: title, enable: !isDone()" />
<a href="#" data-bind="click: remove">Delete</a>
</li>
<% Html.EndTemplate(); %>
答案 1 :(得分:5)
基思提出了非常好的智能解决方案。不过我想让你知道KO 1.3有本机模板引擎。通过新的绑定可以实现:
你可以在Steve Sanderson的宣布中阅读更多内容:http://blog.stevensanderson.com/2011/08/31/knockout-1-3-0-beta-available/(1。控制流绑定)
所以你的例子会有这样的表现:
<ul data-bind="foreach: tasks">
<li>
<input type="checkbox" data-bind="checked: isDone" />
<input data-bind="value: title, enable: !isDone()" />
<a href="#" data-bind="click: remove">Delete</a>
</li>
</ul>
答案 2 :(得分:1)
停止Visual Studio的<script type="text/html"...>
标记将标记的这一部分突出显示为html。因此,这个问题/答案似乎是你最接近答案的答案。
Visual Studio - Markup syntax highlighting inside script[type:txt/html]
答案 3 :(得分:0)
我在这里使用了接受的答案,因为它帮助了我,如果有人想要实际的代码,请转到:
public string StartTemplate(string id)
{
return ("<script type=\"text/html\" id=\"" + id + "\">\r\n");
}
public string EndTemplate()
{
return ("</script>\r\n");
}
HTML:
<%= StartTemplate("WidgetTemplate")%>
...actual template HTML goes here...
<%= EndTemplate() %>