Angular Formly自定义类型控制器在部署时失败

Angular-Formly Custom Type Controller Fails on Deployment

本文关键字:部署 失败 控制器 Formly 自定义 类型 Angular      更新时间:2023-09-26

我正在使用angular formly网站上给出的重复部分的示例。在我的app.config中,我正在创建一个新类型,如下所示:

var unique = 1;
formlyConfigProvider.setType({
  name: 'repeatSection',
  templateUrl: 'app/rawMaterial/repeatSection.html',
  controller: function($scope) {
    $scope.formOptions = {formState: $scope.formState};
    $scope.addNew = addNew;
    $scope.copyFields = copyFields;

    function copyFields(fields) {
      fields = angular.copy(fields);
      addRandomIds(fields);
      return fields;
    }
    function addNew() {
      $scope.model[$scope.options.key] = $scope.model[$scope.options.key] || [];
      var repeatsection = $scope.model[$scope.options.key];
      var lastSection = repeatsection[repeatsection.length - 1];
      var newsection = {};
      if (lastSection) {
        newsection = angular.copy(lastSection);
      }
      repeatsection.push(newsection);
    }
    function addRandomIds(fields) {
      unique++;
      angular.forEach(fields, function(field, index) {
        if (field.fieldGroup) {
          addRandomIds(field.fieldGroup);
          return; // fieldGroups don't need an ID
        }
        if (field.templateOptions && field.templateOptions.fields) {
          addRandomIds(field.templateOptions.fields);
        }
        field.id = field.id || (field.key + '_' + index + '_' + unique + getRandomInt(0, 9999));
      });
    }
    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
  }
  });

在我的本地机器上一切都很好,但当我部署到Heroku时,我会收到以下错误:

Error: [$injector:unpr] Unknown provider: aProvider <- a

如果我从类型定义中删除controller:部分,错误就会消失。保留controller:定义,但注释掉其所有内容仍然会引发错误。

我使用的是有角度的全栈yeoman生成器和默认的Grunt任务。

如果您基于名为a的预期服务抛出错误,这是AngularJS生态系统中缩小的影响。我怀疑缩小时$scope正在转换为a。要保留$scope,请使用"最小安全"注入签名定义控制器。有多种方法可以做到这一点,但这里有一个常见的模式。请注意以下内容。。。

controller: ['$scope', function($scope) {
    /* ... */
}])

JSFiddle链接-简单的演示再现错误