在我的控制器中,我有一个定义为:
的函数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。
提前感谢您的任何反馈。
答案 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中的结构探索。当您将原型用于控制器时,它们会正确地显示在资源管理器中。