2013-03-14 50 views
3

我在我的Win8 HTML5/JS应用程序中遇到了一些与intellisense有关的问题(我认为)。WinJS intellisense无法正常工作

如果我有一个页面下面的代码(在准备就绪:功能):

var control = element.querySelector("#rating").winControl; 

我的第一个问题是,在.winControl属性不会在智能感知显示,但是从网上搜索这似乎是预期的行为(鉴于在像javascript这样的语言中提供intellisense困难)?

但是,我现在主要的问题是,当我尝试访问属性在我的控制变量我得到的消息:

智能感知无法确定此表达

准确的完成列表我已将/// <reference path...等添加到WinJS引用中的base.js和ui.js,但它仍然无效。

有没有人遇到过这个?这是正确的行为?我在这里错过了什么?

Cheers

+0

我最好的猜测是,这是故意的。我想可以想象,在你描述的intellisense引擎确定你的元素状态在执行之前的情况下,它会非常困难。理论上你可能已经改变了对元素的控制等。 – GotDibbs 2013-03-15 13:03:04

+0

当我尝试引用非我当前html的javascript范围之外的命名空间/类时,我总是得到这个。所以它可以工作,但它只在运行时才起作用。有点烦人,但它可能只是我如何让我的项目设置 – 2013-04-04 03:42:33

回答

3

您所看到的是Visual Studio 2012中的预期行为。目前.winControl即使在运行时有效,也不会显示出来。

作为一种解决方法,您可以使用文档注释来告诉JavaScript编辑器该变量的类型,然后您可以为其获取IntelliSense。使用你上面的例子(我假设你想看到的WinJS.UI.Rating控制的建议),类型:

/// <var type="WinJS.UI.Rating"/> 
var control = element.querySelector("#rating").winControl; 
control. 

现在你会看到一个等级控制的完成列表。

  • 约旦,微软的Visual Studio PM
+0

感谢乔丹,这是一个伟大的提示! – AndrewC 2013-05-10 08:37:22

0

querySelector函数返回一个DOM元素。由于.winControl不是DOM元素的标准属性,因此intellisense无法将其作为选项呈现给您。

由于您的“控制”变量正在分配给智能感知未知类型的对象,因此无法为您提供有关未知对象上可能存在或不存在的属性的任何帮助。