шаблон: неразрешенная переменная или введите $ctrl
как сказать PhpStorm / WebStorm, что $ctrl
в шаблоне известен, а также помогает ему решить, к какому контроллеру он принадлежит (возможно, с помощью jsdoc)?
Я создаю компоненты таким образом, в угловой 1.5:
angular
.module('myModule')
.component('myComponent', {
templateUrl: "my.component.html",
controller : [
MyComponentController
]
});
ControllerAs
не помогло...
фрагмент HTML, где появляется проблема ($ctrl.*
):
<div class="entity-summary clear" ng-click="$ctrl.toggleInfo()">
<div class="entity-col">
{{$ctrl.entity.id}}
</div>
<div class="entity-col">
{{$ctrl.entity.host}}
</div>
</div>
4 ответов
к сожалению угловые 1.5 компоненты еще не полностью поддерживаются, пожалуйста, следуйте WEB-20339 для обновления
вы можете избежать большей части шума (mis) с помощью ng-init="$ctrl=$ctrl":
<div ng-init="$ctrl=$ctrl"
ng-click="$ctrl.toggleInfo()"
class="entity-summary clear" >
<div class="entity-col">
{{$ctrl.entity.id}}
</div>
<div class="entity-col">
{{$ctrl.entity.host}}
</div>
</div>
Я нашел не плохое решение.
условие
вы должны использовать по крайней мере ES2016.
Если у вас есть компонент такой:
export class MyComponent {
}
export const MyComponentController = {
controller: MyComponent,
templateUrl: require('./my-component.html')
};
вы можете просто добавить следующую строку:
module.$ctrl = MyComponent;
тогда WebStorm может решить $ctrl
в шаблоне. Intellisense / автозаполнение, к сожалению, все еще не работает .
Edit: просто понял, что это не было об удалении ошибки / предупреждения, но оставить этот ответ в любом случае:
Я удалил предупреждение в Редакторе > Inpections > неразрешенная переменная Javascript для всего, кроме области источников javascript (которую я настроил для своего проекта). Его немного "дробовик решение", но я могу жить без этой проверки в html-файлах...