首页 文章

角度自动完成(即智能)在PhpStorm中不起作用

提问于
浏览
1

我做了以下事情:

  • 在Phpstorm中安装了AngularJS和NodeJS插件

  • 下载最新稳定版Angular(1.4.8)

  • 将angular.js添加到项目中

  • 将angular.js添加到Phpstorm中的库列表中

我的HTML中的指令将自动完成(例如ng-modal),但尝试执行类似Module.fact的操作不会自动完成到工厂 . 这是我的代码:

var appModule = angular.module("appModule", ['ngRoute']);


appModule.fac   //This is me typing factory, but auto complete doesn't help

我正在运行PhpStorm 10.0.2 . 我尝试使用不同版本的PhpStorm,我也尝试使用Angular 1.5(测试版),结果相同 . 此外,我是角色的新手,但我的代码正在运作 . 谢谢!

*我已经审查了这些链接和SO帖子:

PhpStorm Settings

2 回答

  • 0

    如果您更喜欢使用CDN,请将光标放在高亮库名称上,按Alt Enter和下载库 . 这将在WebStorm的缓存中设置一个本地库(不在您的项目中),因此WebStorm可以访问AngularJS方法,指令等,以进行自动完成和文档查找 .

  • 0

    angular 变量是全局变量,当您必须对同一个全局变量进行多次声明时,PhpStorm / WebStorm无法处理自动完成 .

    重要的是验证PhpStorm只发现1个角度声明 . 这与您的实际JavaScript项目没有任何关系,但是PhpStorm在寻找声明的地方 .

    如果你按住 ctrl 并将鼠标放在世界 angular 上 . 它应该突出显示它是可点击的,并显示工具提示,显示它的声明位置 .

    如果工具提示显示标识符有多个定义,则无法正确执行自动完成 . 对于Php / WebStorm中的大多数JS变量而言,这不仅仅是这个角度变量 .

    您有几种方法可以解决此问题:

    1)使用JsDoc强制类型声明到TypeScript

    /**
     * @var {angular.IAngularStatic} myAngular
     */
    var myAngular = angular;
    

    这将使用TypeScript定义声明变量 myAngular . 与任何已经扫描的JS源文件冲突的可能性也小于角度 . 这是一个简单的修复,但为您的项目添加了不必要的源代码 .

    2)通过排除它们来禁用JavaScript源文件

    如果您正在使用 node_modulesbower_components ,那么您需要包含这些文件夹中的一些JS文件,但不要包含不必要的重复项 . 您已经安装了已经安装了TypeScript定义(这对于自动完成更有效) . 在PhpStorm的Project Files面板中找到Angular包,右键单击这些文件夹和"Exclude"这些文件夹 . 您也可以通过"Files / Settings / Directories"中的项目设置执行此操作

    3)忽略JavaScript的捆绑输出文件

    这是我在PhpStorm / WebStorm中发现的最常见问题 . PhpStorm还会将您打包的缩小的JavaScript文件扫描到 webroot/js 文件夹中 . 例如;如果您使用grunt将您的JavaScript代码uglify为 app.min.js ,那么该文件内部是Angular和您的项目代码 . PhpStorm将扫描这个并创建它找到的所有内容的重复声明 .

    在项目中找到所有重复的 *.js 文件,右键单击文件并从菜单中选择"Mark as Plain Text" . 这将告诉编辑器完全忽略来自所有智能感知扫描的文件 .

    总结一下 . 如果您控制单击声明以转到源,并且PhpStorm不立即执行,而是提示您从多个声明中进行选择,那么您在项目中有重复项,并且您需要缩小范围 . 一旦完成,其他一切应该按预期工作 .

相关问题