用于Angularjs的PHPStorm / WebStorm中的代码突出显示

时间:2015-01-14 16:20:13

标签: angularjs phpstorm webstorm

在我的控制器中,我有一个定义为:

的函数
var ProductListingHeaderController = function (FilterService, CategoryService) {
    this.isCategorySet = function () {
        return (FilterService.categoryID);
    };
    this.categoryName = function () {
        return (CategoryService.categoryName());
    };
};

IDE(通过代码突出显示)报告 categoryName()正在使用, isCategorySet()报告为未使用。

这是可以理解的,因为:

categoryName()在html文件中的{{ }}内使用:

<h2>{{productListingHeader.categoryName()}}</h2>

和isCategorySet()用于ng-if字符串:

ng-if="productListingHeader.isCategorySet()"

鉴于这是一种常见的用法,我怀疑我可能会错过Storm中的一个设置,关于如何设置,以便Angular指令的这种用法(在字符串内)被选为&#使用&#34; 34。

提前感谢您的任何反馈。

1 个答案:

答案 0 :(得分:0)

PHP / WebStorm的正常行为。

模板 - &gt; JavaScript实际上只是一个模糊的连接。 AngularJS模板中不支持jsDoc类型推断。因此,如果只有该函数名是唯一的,PHP / WebStorm将匹配模板函数调用JavaScript。

PHP / WebStorm在将闭包方法推断为对象函数时存在问题。我使用AngularJS控制器的原型声明获得了更好的成功。

var ProductListingHeaderController = function (FilterService, CategoryService) {
    this.filterService = FilterService;
    this.categoryService = CategoryService;
}
ProductListingHeaderController.prototype.isCategorySet = function () {
    return (this.filterService.categoryID);
};
ProductListingHeaderController.prototype.categoryName = function () {
    return (this.categoryService.categoryName());
};

将上述代码与您的代码进行比较,并查看WebStorm中的结构探索。当您将原型用于控制器时,它们会正确地显示在资源管理器中。