为啥 JavaScript Intellisense 在 Visual Studio 2012 中并不总是有效?
Posted
技术标签:
【中文标题】为啥 JavaScript Intellisense 在 Visual Studio 2012 中并不总是有效?【英文标题】:Why does JavaScript Intellisense not always work in Visual Studio 2012?为什么 JavaScript Intellisense 在 Visual Studio 2012 中并不总是有效? 【发布时间】:2012-12-07 04:29:03 【问题描述】:我正在使用 Visual Studio 2012 并构建一个 javascript Windows Store 应用程序。
在大多数情况下,智能感知有效,但在某些情况下却无效。我只是想知道为什么。以下是几个例子:
var ctl=document.getElementById("txtName").winControl;
虽然出现了其他项目,但“winControl”项目并没有出现在智能感知中,但它仍然有效。此行中的“srcElement”也是如此:
var nameInput = eventInfo.srcElement;
这是意料之中的还是我错过了什么?
【问题讨论】:
也许它只显示标准 DOM 属性? 【参考方案1】:随着您对 JavaScript 的深入了解,与强类型语言不同,要弄清楚这些值将是什么变得更加困难,除非 JavaScript 代码编写在 html 页面中,编辑器可以在其中运行实时。
var myFunc = function (evt) console.log(evt);
window.onclick = myFunc;
myFunc("Bob");
IDE 应该对此做什么,evt
应该具有哪些属性?
如果 JavaScript 是强类型的,并且该函数只能接受 Event 对象或 ClickEvent 对象,那么 IDE 可以准确地知道预期的属性。
就像.getElementById
——如果一个页面的“myEl”为<a>
,而另一个页面的ID与<canvas>
相同,那么属性应该是什么?
【讨论】:
这是有道理的。因此,在我原始帖子的第一个示例中,智能感知列出了那些常见的项目,而不管选择了什么元素。 winControl 没有显示,因为 IDE 不知道 txtName 将表示支持该属性的对象。我知道有一个很好的解释,只是需要一个快速启动来弄清楚它。谢谢你的解释。【参考方案2】:Norguard 在为像 JS 这样的动态语言提供建议方面的困难是正确的。为了在这种情况下提供帮助,您可以使用文档 cmets 向 Visual Studio JavaScript 编辑器提供提示。例如,我可以使用以下代码:
/// <var type="WinJS.UI.ListView"/>
var listView = document.querySelector("#listView").winControl;
并且 /// 注释会将 WinJS.UI.ListView 类型与我的 listView 变量相关联。输入 listView.
将显示一个完成列表,其中包含对 ListView 的建议。
【讨论】:
以上是关于为啥 JavaScript Intellisense 在 Visual Studio 2012 中并不总是有效?的主要内容,如果未能解决你的问题,请参考以下文章