javascript - AngularJS ng-repeat 具有多个显示不同值的列表

标签 javascript angularjs json forms

我正在尝试使用 AngularJS 为我们的网站创建一些表单。该页面将有 2 个复选框“表格 1”和“表格 2”。默认情况下会检查表格 1。 如果您选中“表格 1”和“表格 2”,则应显示“表格 1”和“表格 2”的字段。但是,只应显示不同的字段。

下面是我的 json 数据。

[
    {
        "form_id": 1,
        "form_name": "Form 1",
        "form_field_list": [
            {
                "form_field_id": 1,
                "form_field_label": "First Name",
                "form_field_value": ""
            },
            {
                "form_field_id": 2,
                "form_field_label": "Last Name",
                "form_field_value": ""
            },
            {
                "form_field_id": 3,
                "form_field_label": "Email",
                "form_field_value": ""
            }
        ]
    }
    {
        "form_id": 2,
        "form_name": "Form 2",
        "form_field_list": [
            {
                "form_field_id": 1,
                "form_field_label": "First Name",
                "form_field_value": ""
            },
            {
                "form_field_id": 2,
                "form_field_label": "Last Name",
                "form_field_value": ""
            },
            {
                "form_field_id": 4,
                "form_field_label": "Comments",
                "form_field_value": ""
            }
        ]
    }
]

例如,如果您选中“Form 1”复选框,则应显示以下输入字段: 名 姓 电子邮件

如果您选中“Form 2”复选框,则应显示以下输入字段: 名 评论

如果两个复选框都被选中,则应显示以下输入字段: 名 姓 电子邮件 评论

我不知道从哪里开始。我是否首先构建一个单独的 JSON 列表,其中包含唯一的 form_field_list 对象?

最佳答案

我认为这会让您更接近您正在寻找的东西。

http://jsfiddle.net/v61ky2to/1/

var selectedFormFields = {};

$scope.uniqueFields = {};

$scope.toggleFormField = function(formField) {
  // Determine whether or not this field should be added or removed
  if (selectedFormFields[formField.form_id]) {
    delete(selectedFormFields[formField.form_id]);
  } else {
    selectedFormFields[formField.form_id] = formField.form_field_list;
  }

  // Re-evaluate all of the unique fields with the updated selected form fields
  $scope.uniqueFields = {};
  for (var i in selectedFormFields) {
    for (var j in selectedFormFields[i]) {
      $scope.uniqueFields[selectedFormFields[i][j].form_field_id] = selectedFormFields[i][j];
    }
  }
}

我基本上建议保留已选择字段的选项卡,并根据子字段的 form_field_id 连接唯一字段,不断重新评估子字段。

关于javascript - AngularJS ng-repeat 具有多个显示不同值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36467344/

相关文章:

javascript - jQuery向上遍历并找到

javascript - 使用 Javascript 访问 NASA api

javascript - 通过服务 Angular 加载本地 json 文件

javascript - AngularJS - 将函数传递给spyOn

python - 将 Twitter 时间转换为特定格式的日期时间,以统计一天中推文的频率

javascript - 在 Firefox 中使用 jQuery.animate 后文本消失

javascript nodejs promise 所有内容稍后执行

javascript - Shift 单击以在不使用 Angular Directive(指令)的情况下为对象添加值

php - 使用 fopen()、fgets() 和 PHP 的流式 JSON 解析器

php - 使用 jQuery 通过 Ajax 返回 JSON