我们一直在使用AngularJS开发一个大产品,并且最近才尝试在jsdoc注释的帮助下使用use closure编译器进行语法检查。
我遇到了这个问题,在网上找不到任何帮助,包括SO。
考虑作为服务编写的模型类,并使用类名作为类型:
ourmodule.factory('OurModel', function() {
/**
* @constructor
*/
var OurModel = function() {};
return OurModel;
});
ourmodule.controller('Controller1', ['$scope', 'OurModel', function($scope, OurModel) {
/**
* @return {OurModel}
*/
$scope.getNewModel = function () {
return new OurModel();
}
}]);
Closure编译器无法识别'OurModel'。我错过了什么?
答案 0 :(得分:1)
Closure编译器无法猜测您注入到控制器的OurModel与您在工厂中声明的相同,angularJS注入模式使得闭包编译器在这种情况下无效。
如果在父范围内声明OurModel,则不会发出警告:
var ourmodule = {
factory: function(a, b){},
controller: function(a, b){}
};
/**
* @constructor
*/
var OurModel = function(){};
ourmodule.controller('Controller1', ['$scope', function($scope) {
/**
* @return {OurModel}
*/
$scope.getNewModel = function () {
return new OurModel();
}
}]);