为什么JavaScript Intellisense不总是在Visual Studio 2012中工作?

为什么JavaScript Intellisense不总是在Visual Studio 2012中工作?,javascript,windows-8,visual-studio-2012,intellisense,javascript-intellisense,Javascript,Windows 8,Visual Studio 2012,Intellisense,Javascript Intellisense,我正在使用并构建一个JavaScript Windows应用商店应用程序 在大多数情况下,智能感知是有效的,但在某些情况下却不行。我只是想知道为什么。以下是几个例子: var ctl=document.getElementById("txtName").winControl; 虽然显示了其他项,“winControl”项在intellisense中不显示,但它仍然可以工作。这一行中的“srcelelement”也是如此: var nameInput = eventInfo.srcElement

我正在使用并构建一个JavaScript Windows应用商店应用程序

在大多数情况下,智能感知是有效的,但在某些情况下却不行。我只是想知道为什么。以下是几个例子:

var ctl=document.getElementById("txtName").winControl;
虽然显示了其他项,“winControl”项在intellisense中不显示,但它仍然可以工作。这一行中的“srcelelement”也是如此:

var nameInput = eventInfo.srcElement;

这是意料之中的还是我遗漏了什么?

当您深入了解JavaScript时,与强类型语言不同的是,了解这些值将是什么变得更加困难,除非JavaScript代码写在HTML页面中,编辑器可以实时运行该页面

var myFunc = function (evt) { console.log(evt); }

window.onclick = myFunc;

myFunc("Bob");
IDE应该如何利用它,以及
evt
应该具有哪些属性

如果JavaScript是强类型的,并且该函数只能接受事件对象或ClickEvent对象,那么IDE就可以准确地知道所需的属性


就像
.getElementById
——如果一个页面的“myEl”与
相同,而另一个页面的ID与
相同,那么属性应该是什么呢?

与强类型语言不同,当您深入研究JavaScript时,就很难弄清楚这些值是什么,除非JavaScript代码写在HTML页面中,否则编辑器可以实时运行该页面

var myFunc = function (evt) { console.log(evt); }

window.onclick = myFunc;

myFunc("Bob");
IDE应该如何利用它,以及
evt
应该具有哪些属性

如果JavaScript是强类型的,并且该函数只能接受事件对象或ClickEvent对象,那么IDE就可以准确地知道所需的属性


就像
.getElementById
——如果一个页面的“myEl”与
相同,而另一个页面的ID与
相同,那么属性应该是什么呢?

Norguard正确地指出了为JS这样的动态语言提供建议的困难。为了在这种情况下提供帮助,可以使用文档注释向VisualStudioJavaScript编辑器提供提示。例如,我可以使用以下代码:

/// <var type="WinJS.UI.ListView"/>
var listView = document.querySelector("#listView").winControl;
//
var listView=document.querySelector(#listView”).winControl;
///注释将WinJS.UI.ListView类型与我的ListView变量相关联。键入
listView。
将显示一个完成列表,其中包含对listView的建议

  • Jordan,Microsoft Visual Studio PM

    • Norguard在为JS这样的动态语言提供建议方面的困难是正确的。为了在这种情况下提供帮助,可以使用文档注释向VisualStudioJavaScript编辑器提供提示。例如,我可以使用以下代码:

      /// <var type="WinJS.UI.ListView"/>
      var listView = document.querySelector("#listView").winControl;
      
      //
      var listView=document.querySelector(#listView”).winControl;
      
      ///注释将WinJS.UI.ListView类型与我的ListView变量相关联。键入
      listView。
      将显示一个完成列表,其中包含对listView的建议

      • Jordan,Microsoft Visual Studio PM

      可能它只显示标准DOM属性?可能它只显示标准DOM属性?这很有意义。因此,在我最初文章中的第一个示例中,intellisense列出了那些常见的项目,而不管选择了什么元素。winControl不会显示,因为IDE不知道txtName将表示支持该属性的对象。我知道有一个很好的解释,只是需要一个跳跃式的开始去弄清楚它。谢谢你的解释,这很有道理。因此,在我最初文章中的第一个示例中,intellisense列出了那些常见的项目,而不管选择了什么元素。winControl不会显示,因为IDE不知道txtName将表示支持该属性的对象。我知道有一个很好的解释,只是需要一个跳跃式的开始去弄清楚它。谢谢你的解释。