如何动态转换我的"对象"在视图中列出ng-model

时间:2017-06-27 21:30:04

标签: angularjs

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

我不想这样声明: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,但结果很奇怪。

1 个答案:

答案 0 :(得分:0)

我们可以通过2种解决方案来实现:

  

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

     

如果type_text_field中有多个title_dynamic_generate_field,您希望如何处理?因为您想将其转换为"type_text_field":[{},...]

但是我对这个问题的回答是:

  1. 如果我们知道我们想要将主题params发送给我的动态json,我的意思是,如果我们知道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
  2.   

    我们更改了params的模型,它可以帮助我们检测(找到)键

    1. 如果我们不知道动态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
    2.   

      此示例是手动的,我们使用嵌套keys来检测=IF(AND(N12="Yes",J14>=48),(F10-F7+(F10<F7)-(F9-F8))*24,0) 名称