我知道这里有几个possible strict violation
的问题,但我还没有能够根据他们得出结果。我试图在一个类的控制器中使用var vm = this
,它抛出了这个错误,但是我在其他控制器中做了同样的事情不止一次,没有发生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
。不幸的是,我不是一个角度专家,所以我不知道这是否是一个问题,但只是认为这可能是错误来自哪里?
刚刚添加,jsHint假定一个以大写开头的函数是一个构造函数,在非构造函数中使用'this'时适当使用'this'是有点可疑的 –
这很奇怪。在您根据另一个SO问题做出回应之前,我已经尝试过了,并没有得到肯定的结果。我今天早上回到工作(刚才),并开始了一个新的命令提示符,rand'gulp vet',它工作。所以,是的,哈哈猜测就是这样。感谢您的回应! – erp