PhpStorm将现有变量标记为“未解决的变量”

时间:2014-09-25 21:23:15

标签: javascript angularjs phpstorm

我在PhpStorm中与AngularJS合作。我对两者都不熟悉。
我的项目中有两个文件index.htmlapp.js。从index.html开始,我引用store.products中定义的变量app.js,但PhpStorm告诉我它无法解析变量。

PhpStorm对product.name没有任何问题。

代码在浏览器中没有问题,所以我认为编辑器一定有问题。或者错误只是浏览器忽略的一个微妙的错误。

index.html(问题出在ng-repeat指令中):

<!DOCTYPE html>
<html ng-app="gemStore">
<head lang="en">
  (...)
</head>
<body ng-controller="StoreController as store">
  <ul class="list-group">
    <li class="list-group-item" ng-repeat="product in store.products">
      <h3>
        {{product.name}}
      </h3>
    </li>
  </ul>

  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.3/angular.min.js"></script>
  <script type="text/javascript" src="app.js"></script>
</body>
</html>

app.js

(function() {
  var app = angular.module('gemStore', []);

  app.controller('StoreController', function() {
    this.products = gems;
  });

  var gems = [
    ...
  ];

})();

我希望有人能发现错误。即使页面在浏览器中正确呈现,PhpStorm显示错误也很烦人。

修改:在app.jsthis.products,当我从"unused definition: products"引用store.products时,index.html未标有index.html。所以不知何故PhpStorm可以看到变量正在被使用,但仍然无法从{{1}}的角度看到它。

2 个答案:

答案 0 :(得分:0)

是的,PhpStorm应该能够找到参考。我刚刚在这里进行了测试,并与我的PhpStorm一起工作。

<html ng-app="store">
<body ng-controller="StoreController as store"> <-- store is already app name.

您已将控制器别名和您的应用命名为相同的关键字store。我认为这让PhpStorm感到困惑。尝试给控制器一个不同的别名。

如果仍然无效,请尝试:

启动PhpStorm,单击“文件/无效缓存”菜单,然后选择“无效并重新启动”。

答案 1 :(得分:0)

我可以在PHPStorm 8 / WebStorm 9 EAP中重新创建该问题。问题是Angular插件没有正确识别Angular 1.2&#39;句法。请投票给WEB-11544