如何在视图中动态地将我的"Object"转换为 ng-model 中的列表



我正在尝试将我的对象转换为动态列表,因此我在视图上构建而不是在控制器上声明。

我不想这样声明: custom_fields.title_field.type_text_field = [],因为 title_field是动态构建的,它可能是任何类型的文本,例如 full_name

我的JSON如下:

     "custom_fields":{  
        "title_dynamic_generate_field":{  
           "type_text_field":{  
              "name":"John",
              "first_name":"Wick"
           },
            "type_boolean_field":{
                "is_badass": true,
                "is_good_movie": true
           },
            "type_select_field": {
                "this_select": 1,
                "i_got_this": "nope i didnt got this"
            }
        },

和:

     "custom_fields":{  
        "title_dynamic_generate_field":{  
           "type_text_field":[{  
              "name":"John",
              "first_name":"Wick"
           }],
            "type_boolean_field":[{
                "is_badass": true,
                "is_good_movie": true
           }],
            "type_select_field": [{
                "this_select": 1,
                "i_got_this": "nope i didnt got this"
            }]
        },

我要转换为数组的对象是type_text_field,它也可以是动态的,例如type_date_fieldtype_select_field等。

我的 ng-model是这样的:

ng-model="objectApp.application.applicant.custom_fields[layout.dynamic_title][input.type][input.variable]"

[input.type]是我要转变为数组,我该如何实现?我尝试使用 $index,但结果奇怪。

我们可以通过2个解决方案来完成:

关于您的任务有一个问题:

如果我们在title_dynamic_generate_field中有一个以上的type_text_field,您想要如何处理?因为您想将其转换为"type_text_field":[{},...]

但是,我对问题的答案是:

  1. 如果我们知道要将主题发送为json的动态params是什么,我的意思是,如果我们知道title_dynamic_generate_fieldtype_text_field的关键是什么,我们会以此样本的形式执行:

    var data = {
      "custom_fields": {
        dynamicParamIs1: 'title_dynamic_generate_field',
        dynamicParamIs2: 'type_text_field',
        "title_dynamic_generate_field": {
            "type_text_field": {
                "name": "John",
                "first_name": "Wick"
            }
        }
      }
    }
    var paramHelper1 = json.custom_fields[json.custom_fields.dynamicParamIs1];
    var paramHelper2 = json.custom_fields.dynamicParamIs2;
    var solutionA = function (object, as) {
       var array = [];
       for (var key in object) {
         var newObject = object[key];
         array.push(newObject);
       }
       object[as] = array;
    }
    solutionA(paramHelper1, paramHelper2);
    

我们更改了json的模型,该模型可以帮助我们检测(查找(键

  1. 如果我们不知道动态params是什么,我们会这样做:

    var data = {
      "custom_fields": {
        "title_dynamic_generate_field": {
            "type_text_field": {
                "name": "John",
                "first_name": "Wick"
            }
        }
      }
    }
    var solutionB = function (json) {
       var array = [];
       for (var key in json) {
           var j1 = json[key];
           for (var key2 in j1) {
               var j2 = j1[key2];
               for (var key3 in j2) {
                   var fullObject = j2[key3];
                   array.push(fullObject);
                   j2[key3] = array;
               }
           }
       }
    }
    solutionB(data);
    

此示例是手册,我们使用嵌套的for检测keys名称

最新更新