使用AngularJS的闭包编译器

时间:2013-04-26 17:50:22

标签: angularjs

我们一直在使用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'。我错过了什么?

1 个答案:

答案 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();
}
}]);