我在 if 语句中设置对象键时遇到了一些麻烦。我只想在特定条件下设置键:
angular.forEach($scope.variables, function(variable) {
$scope.schema.properties[variable.varname] = {
type: (function() {
switch (variable.datatype) {
case 'integer':
case 'float':
return 'number';
case 'text':
case 'radio':
case 'datetime':
return 'string';
case 'checkbox':
return 'array';
}
})(),
title: variable.name
};
if (variable.datatype === 'datetime') {
$scope.schema.properties[variable.varname].format = 'date';
}
if (variable.datatype === 'radio' || 'checkbox') {
$scope.schema.properties[variable.varname].enum = variable.options;
}
});
如果变量的数据类型是“日期时间”,我只希望我的对象有一个“格式”键,如果数据类型是“收音机”或“复选框”,我只想要一个“枚举”键。问题是,无论变量的数据类型如何,我的所有对象都来自此代码的两个键。
如果它们不是指定的数据类型,则键为空。但我需要钥匙根本不存在。我什至尝试添加:
} else {
delete $scope.schema.properties[variable.varname].format;
delete $scope.schema.properties[variable.varname].enum;
}
但是由于某种原因,这些对象仍然具有密钥。如果我在页面加载后删除控制台中的键,它就可以工作。但是我需要在页面加载时不存在键,因为我使用的是angular-schema-form,如果这些键存在,它会更改生成的表单。有任何想法吗?