Angular-Formly 自定义类型控制器部署失败
Angular-Formly Custom Type Controller Fails on Deployment
我正在使用 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:
定义但注释掉其所有内容仍然会引发错误。
我在默认的 Grunt 任务中使用 angular-fullstack yeoman 生成器。
如果您根据名为 a
的预期服务抛出错误,这是 AngularJS 生态系统中缩小的结果。我怀疑 $scope
在缩小时被转换为 a
。要保留 $scope
,请使用 "min-safe" 注入签名定义您的控制器。有多种方法可以做到这一点,但这里有一个常见的模式。观察以下...
controller: ['$scope', function($scope) {
/* ... */
}])
JSFiddle Link - 简单的演示重现错误
我正在使用 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:
定义但注释掉其所有内容仍然会引发错误。
我在默认的 Grunt 任务中使用 angular-fullstack yeoman 生成器。
如果您根据名为 a
的预期服务抛出错误,这是 AngularJS 生态系统中缩小的结果。我怀疑 $scope
在缩小时被转换为 a
。要保留 $scope
,请使用 "min-safe" 注入签名定义您的控制器。有多种方法可以做到这一点,但这里有一个常见的模式。观察以下...
controller: ['$scope', function($scope) {
/* ... */
}])
JSFiddle Link - 简单的演示重现错误