我在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;
}
});
如果变量的数据类型是'datetime',我只希望我的对象有一个'format'键,如果数据类型是'radio'或'复选框,我只想要一个'enum'键。问题是,无论变量的数据类型如何,我的所有对象都带有两个键。
如果它们不是指定的数据类型,则键为空。但我需要钥匙根本不存在。我甚至尝试添加:
} else {
delete $scope.schema.properties[variable.varname].format;
delete $scope.schema.properties[variable.varname].enum;
}
但是由于某些原因,对象仍然有键。如果我在页面加载后删除控制台中的键,它就可以工作。但我需要在页面加载时不存在键,因为我使用的是angular-schema-form,如果存在这些键,则会更改生成的表单。有什么想法吗?