我认为VS 2013应该支持AngularJS属性智能感知,但是在最新版本的 Microsoft Visual Studio Ultimate 2013 version 12.0.21005.1 上却无法正常工作。
出现以下验证警告:
属性“ng-app”不是元素“html”的有效属性。
属性“ng-view”不是元素“div”的有效属性。
我是否漏掉了xsd引用?
我认为VS 2013应该支持AngularJS属性智能感知,但是在最新版本的 Microsoft Visual Studio Ultimate 2013 version 12.0.21005.1 上却无法正常工作。
出现以下验证警告:
属性“ng-app”不是元素“html”的有效属性。
属性“ng-view”不是元素“div”的有效属性。
我是否漏掉了xsd引用?
我曾经也遇到过同样的问题,并采取了以下措施,帮助我解决了问题。
如果您正在使用ReSharper,您可以添加一个扩展程序,将为您提供Intellisense,并不会引发警告。
在VS中的顶部菜单栏> Resharper> Extension Manager> 搜索AngularJS,这将添加AngularJS Intellisense。
------- 编辑 -------
使用Resharper 8.2.1
我知道这篇文章有些老,但我仍然遇到了同样的问题。要解决VS 2013的问题,请按照以下步骤进行:
1)打开文件C:\Program Files(x86)\Microsoft Visual Studio 12.0\Common7\Packages\schemas\html\commonHTML5Types.xsd
2)找到文件中以这一行开头的区域:<xsd:attribute name="translate">
。向下滚动约7行,找到相应的结束标签:</xsd:attribute>
3)将以下代码行粘贴到</xsd:attributeGroup>
结束标签之前:
<xsd:attribute name="ng-app" vs:category="Angular" />
<xsd:attribute name="ng-bind-html" vs:category="Angular" />
<xsd:attribute name="ng-bind-html-unsafe" vs:category="Angular" />
<xsd:attribute name="ng-bind-template" vs:category="Angular" />
<xsd:attribute name="ng-checked" vs:category="Angular" />
<xsd:attribute name="ng-class" vs:category="Angular" />
<xsd:attribute name="ng-class-even" vs:category="Angular" />
<xsd:attribute name="ng-class-odd" vs:category="Angular" />
<xsd:attribute name="ng-click" vs:category="Angular" />
<xsd:attribute name="ng-cloak" vs:category="Angular" />
<xsd:attribute name="ng-controller" vs:category="Angular" />
<xsd:attribute name="ng-csp" vs:category="Angular" />
<xsd:attribute name="ng-dblclick" vs:category="Angular" />
<xsd:attribute name="ng-disabled" vs:category="Angular" />
<xsd:attribute name="ng-form" vs:category="Angular" />
<xsd:attribute name="ng-hide" vs:category="Angular" />
<xsd:attribute name="ng-href" vs:category="Angular" />
<xsd:attribute name="ng-include" vs:category="Angular" />
<xsd:attribute name="ng-init" vs:category="Angular" />
<xsd:attribute name="ng-list" vs:category="Angular" />
<xsd:attribute name="ng-model" vs:category="Angular" />
<xsd:attribute name="ng-mousedown" vs:category="Angular" />
<xsd:attribute name="ng-mouseenter" vs:category="Angular" />
<xsd:attribute name="ng-mouseleave" vs:category="Angular" />
<xsd:attribute name="ng-mousemove" vs:category="Angular" />
<xsd:attribute name="ng-mouseover" vs:category="Angular" />
<xsd:attribute name="ng-mouseup" vs:category="Angular" />
<xsd:attribute name="ng-multiple" vs:category="Angular" />
<xsd:attribute name="ng-non-bindable" vs:category="Angular" />
<xsd:attribute name="ng-readonly" vs:category="Angular" />
<xsd:attribute name="ng-repeat" vs:category="Angular" />
<xsd:attribute name="ng-selected" vs:category="Angular" />
<xsd:attribute name="ng-show" vs:category="Angular" />
<xsd:attribute name="ng-src" vs:category="Angular" />
<xsd:attribute name="ng-style" vs:category="Angular" />
<xsd:attribute name="ng-switch" vs:category="Angular" />
<xsd:attribute name="ng-transclude" vs:category="Angular" />
<xsd:attribute name="ng-view" vs:category="Angular" />
保存文件并重新打开VS2013。这应该会解决问题。
ng-cloak
这样没有值的指令,您可以添加属性 vs:standalone="true"
: <xsd:attribute name="ng-cloak" vs:category="Angular" vs:standalone="true" />
- GôTô我安装了http://vswebessentials.com/
创建了一个名为_reference.js的文件,并添加了内容
/// <autosync enabled="true" />
/// <reference path="angular.js" />
/// <reference path="underscore.js" />
我是从The Story Behind _references.js了解到这个的。
您也可以直接在VS 2013的软件包管理器控制台中运行以下命令:Install-Package AngularJS.Intellisense。
尝试在选项中勾选 文本编辑器\HTML\通用\自动列出成员
。
我知道这篇文章很旧,而且问题特别涉及到VS 2013,但是如果你仍在运行VS 2010,并想要应用puargs的解决方案,你可以在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\schemas\html\html_5.xsd找到该文件。
你需要将puargs的代码添加到<xsd:attributeGroup name="commonHTML5coreAttributeGroup">
部分中。
Mads Kristensen还讨论了[将此解决方案应用于VS 2012]1,并在第2步提供了2012年commonHTML5Types.xsd的更新版本的链接。
还要注意,puargs和Mads的列出的ng-view属性缺少一个导致“属性名称必须后跟等号(=)符”警告的属性。完整的元素为:<xsd:attribute name="ng-view" vs:category="Angular" vs:standalone="true"/>
。
data-ng-*
- 从技术上讲,ng-*
不是一个有效的属性。 - tymeJV