3

我们一直在用 AngularJS 开发一个大产品,最近才尝试使用闭包编译器在 jsdoc 注释的帮助下进行语法检查。

我遇到了这个问题,在网上找不到任何帮助,包括 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();
    }
}]);

闭包编译器无法识别“OurModel”。我错过了什么?

4

1 回答 1

1

闭包编译器无法猜测您注入控制器的 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();
}
}]);
于 2013-04-26T18:09:10.130 回答