KnockoutJs和模板 - Visual Studio中没有代码突出显示/完成?

4im*_*ble 4 javascript jquery visual-studio-2010 knockout.js

我一直在玩淘汰网站上的教程,并喜欢使用它.

所以我决定用它制作一个简单的网站.我很遗憾地注意到在使用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>
Run Code Online (Sandbox Code Playgroud)

这是你必须吞下的东西还是可以避免/可以修复的东西?模板似乎是构建页面最常用的方法之一,所以我更希望得到IDE的支持.

Kei*_*amo 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(); %>
Run Code Online (Sandbox Code Playgroud)


小智 5

基思提出了非常好的智能解决方案.不过我想让你知道KO 1.3有本机模板引擎.通过新绑定可以实现:

  • 如果
  • 如果不
  • 的foreach!

您可以在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>
Run Code Online (Sandbox Code Playgroud)