【问题标题】:Knockout js intellisense (autosuggest) not working for Webstorm and Visual Studio淘汰赛 js 智能感知(自动建议)不适用于 Webstorm 和 Visual Studio
【发布时间】:2014-02-25 13:28:04
【问题描述】:

我在我的简单应用程序中使用了淘汰赛 js。 knockout js 在我的应用程序中运行良好。我的问题是为什么VS 2013WebStorm 没有显示任何用于淘汰赛的智能感知?它还显示jQuery 的智能感知。

目前我的代码是:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="Scripts/jquery-1.9.0.js"></script>
    <script type="text/javascript" src="Scripts/knockout-3.0.0.js"></script>
    <script type="text/javascript">
        $(function() {
            $("#jqueryTestId").html("Hello world, From jquery.");
        });
    </script>
</head>
<body>
    <div>
        name: <input type="text" data-bind="value: name"/> <br/>
        You've clicked <span data-bind="text: numberOfClicks"></span> times
        <button data-bind="click: incrementClickCounter">Click me</button>

    </div>
    <div id="jqueryTestId">

    </div>

<script type="text/javascript">
    var viewModel = {
        numberOfClicks : ko.observable(0),
        name : ko.observable(""),
        incrementClickCounter : function() {
            var previousCount = this.numberOfClicks();
            alert(this.name("TestName"));
            this.numberOfClicks(previousCount + 1);
        }
    };

    ko.applyBindings(viewModel);
</script>
</body>
</html>

在 WebStorm 中,它不显示 任何 智能感知。但在 VS 2013 中,它仅在建议列表中显示 ko,但不显示 observable 函数,例如:

ko.observable();

如何启用智能感知?

【问题讨论】:

  • @PWKad 我为 jQuery 测试了 VS,但它的智能感知工作正常
  • 对于 WebStorm,最好的办法是将 Knockout 配置为一个库,例如:jetbrains.com/webstorm/webhelp/…。在“库”对话框中,单击“下载...”,然后将下拉菜单切换到“TypeScript 社区存根”,然后选择淘汰赛。这将为您提供最好的智能感知。

标签: javascript visual-studio knockout.js webstorm jetbrains-ide


【解决方案1】:

正如@RP Niemeyer 所建议的那样,使用在 Settings/libraries/javaScript 中配置为 javascript 库的 knockout.d.ts 是 WebStorm 的最佳解决方案。目前无法使用缩小的 knockout-3.0.0.js 作为库 - 请参阅 WEB-10723

【讨论】:

    【解决方案2】:

    你只需要使用我做的 KnockoutJS 的调试版本,它自动完成得很好:

    <script type="text/javascript" src="js/knockout-3.2.0.debug.js"/>
    

    Knockout Debug Version

    希望这能解决您的问题:)

    这也适用于“数据绑定”标签:link

    【讨论】:

    • 这也解决了 RubyMine 的智能感知问题。
    • 虽然这确实解决了问题,但我不是 100% 满意您可以在淘汰赛官方网站上找到的注释(检查粗体部分):也可用:调试构建。注意:这只是为了帮助您了解 Knockout 的工作原理。 不要将它用于正常的应用程序开发,因为它会暴露额外的不受支持的私有 API。 如果敲除以更容易的方式编写智能感知或其他 IDE 适应淘汰赛声明其代码的方式。
    • 我同意你的观点,因为调试脚本也更大,但如果你只是为了智能感知自动完成而使用它,我认为从缩小版到调试版来回更改是公平的.
    • 我认为可以将调试脚本保留在您的主源目录之外,并且仍然可以获得代码完成的好处。我实际上并没有在任何脚本标签中使用调试脚本,但 Webstorm 仍然选择库进行索引。