在If语句中设置Javascript对象键

时间:2016-03-18 20:12:18

标签: javascript angularjs angular-schema-form

我在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,如果存在这些键,则会更改生成的表单。有什么想法吗?

0 个答案:

没有答案