可能严格违反一个地方但不是另一个地方
Possible strict violation one place but not another
我知道这里有一些 possible strict violation
问题,但我无法根据这些问题得出结果。我试图在一个 class 的控制器中使用 var vm = this
并且它抛出此错误,但我在其他控制器中不止一次做过同样的事情而没有 possible strict violation
错误。
所以这是第一个js文件。它是一个 angular 指令,控制器在同一个文件中。错误来自下面控制器中的 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
。不幸的是,我不是 angular 专家,所以我不知道这是否是一个问题,只是想这可能是错误的来源?
也许只使用 this 来分配属性?
我是说
this.foo = 'bar';
将函数 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*/}
我知道这里有一些 possible strict violation
问题,但我无法根据这些问题得出结果。我试图在一个 class 的控制器中使用 var vm = this
并且它抛出此错误,但我在其他控制器中不止一次做过同样的事情而没有 possible strict violation
错误。
所以这是第一个js文件。它是一个 angular 指令,控制器在同一个文件中。错误来自下面控制器中的 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
。不幸的是,我不是 angular 专家,所以我不知道这是否是一个问题,只是想这可能是错误的来源?
也许只使用 this 来分配属性?
我是说
this.foo = 'bar';
将函数 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*/}