Я знаю, что здесь есть несколько possible strict violation
, но я не смог прийти к результату, основанному на них. Я пытаюсь использовать var vm = this
в контроллере в одном классе, и это бросает эту ошибку, но я делал то же самое в других контроллерах более одного раза без каких-либо possible strict violation
ошибок при possible strict violation
.
Итак, вот первый js файл. это угловая директива с контроллером в том же файле. Ошибка возникает из var vm = this
в контроллере ниже.
angular.module('app.monitor').directive('scModelLegacyViewer',
scModelLegacyViewer);
function scModelLegacyViewer() {
return {
restrict : 'E',
templateUrl : 'app/monitor/monitor.html',
scope : {
config : '=',
register : '&?',
data : '=?',
allowEditingSwitch : '=?'
},
controller: scModelLegacyViewerController,
controllerAs: 'vm'
};
}
scModelLegacyViewerController.$inject = [ '$q', '$scope', '$timeout', 'config',
'logger', 'ProjectService', 'ModelService', 'InstanceService',
'BayesianService'];
function scModelLegacyViewerController($q, $scope, $timeout,
config, logger, ProjectService,
ModelService, InstanceService, BayesianService) {
var vm = this; // HERE IS THE ERROR LINE
vm.modelInstanceChannel = 'MODEL_INSTANCE';
vm.saveAll = saveAll;
...
Другим файлом, где это работает отлично, является, например, то, что не вызывает ошибок:
angular
.module('app.model')
.controller('ModelController', ModelController);
//scInitialConfig added in model.route.js
ModelController.$inject = ['$document', '$interval', '$scope', '$stateParams', 'logger',
'modelService', 'scInitialConfig'];
/* @ngInject */
function ModelController($document, $interval, $scope, $stateParams, logger,
modelService, scInitialConfig) {
var vm = this;
var data = null;
vm.instance = 'default';
vm.title = 'Model Viewer';
...
Единственное отличие, которое я могу придумать, это то, что @в верхней части первого файла я объявляю directive
но во втором файле это просто controller
. К сожалению, я не эксперт по углам, поэтому я не знаю, является ли это проблемой, но просто думаю, что это может быть ошибка?
Переименуйте функцию scModelLegacyViewerController в ScModelLegacyViewerController. JsHint позволяет присваивать это переменной только в том случае, если имя начинается с заглавной буквы. Так что это будет
angular.module('app.monitor').directive('scModelLegacyViewer',
scModelLegacyViewer);
function scModelLegacyViewer() {
return {
restrict : 'E',
templateUrl : 'app/monitor/monitor.html',
scope : {
config : '=',
register : '&?',
data : '=?',
allowEditingSwitch : '=?'
},
controller: ScModelLegacyViewerController,
controllerAs: 'vm'
};
}
function ScModelLegacyViewerController() {/*code*/}
Может быть, просто используйте это, чтобы назначить свойства?
Я имею в виду this.foo = 'bar';
var vm = this;
более уместно. Я пытаюсь решить проблему с точки зрения моей реализации.
this
целесообразно, в то время как использованиеthis
в функции не конструктора является небольшим подозрениемgulp vet
и это сработало. Так что да, ха-ха, думаю, это все. Спасибо за ответ!