Waitme9 2023-01-04 11:15 采纳率: 79.4%
浏览 35
已结题

关于使用vue elementui分组下拉框动态配置其数据源失效的问题?

关于使用vue elementui分组下拉框动态配置其数据源失效的问题?
以下是我的下拉框代码:

<el-select id="sel" v-model="sizes" placeholder="请选择">
            <el-option-group v-for="group in sizes" :key="group.cofigname" :label="group.cofigname">
                <el-option v-for="item in group.sku" :key="item.cofigname" :label="item.cofigname" :value="item.id">
                </el-option>
            </el-option-group>
        </el-select>

数据源的生成代码:

beforeCreate() {
                $.getJSON("json/test1.json", function (data) {
                        var s = data.data.size;
                        var outdata = Array();
                        //格式化
                        for (let i = 0; i < s.length; i++) {
                            // let obj = [];
                            let obj = Array();
                            for(let j=0;j<s[i].sku.length;j++){
                                let child = {
                                    label:s[i].sku[j].cofigname,
                                    value:s[i].sku[j].cofigname
                                }
                                obj.push(child);
                            }
                            let parent = {
                                label:s[i].cofigname,
                                options:obj
                            }
                            outdata.push(parent);
                        }
                        this.sizes = outdata;
                        console.log("sada",outdata);
                    })
            },

上文中sada控制台打印的outdata:

[
    {
        "label": "长度",
        "options": [
            {
                "label": "1m",
                "value": "1m"
            },
            {
                "label": "2m",
                "value": "2m"
            },
            {
                "label": "3m",
                "value": "3m"
            }
        ]
    },
    {
        "label": "颜色",
        "options": [
            {
                "label": "红",
                "value": "红"
            },
            {
                "label": "黄",
                "value": "黄"
            },
            {
                "label": "蓝",
                "value": "蓝"
            },
            {
                "label": "绿",
                "value": "绿"
            },
            {
                "label": "紫",
                "value": "紫"
            }
        ]
    }
]  

elementui文档中写的数据源格式:

[{
          label: '热门城市',
          options: [{
            value: 'Shanghai',
            label: '上海'
          }, {
            value: 'Beijing',
            label: '北京'
          }]
        }, {
          label: '城市名',
          options: [{
            value: 'Chengdu',
            label: '成都'
          }, {
            value: 'Shenzhen',
            label: '深圳'
          }, {
            value: 'Guangzhou',
            label: '广州'
          }, {
            value: 'Dalian',
            label: '大连'
          }]
        }]

运行之后的效果:

img

请问为何不能将数据渲染到下拉框之中?

  • 写回答

3条回答 默认 最新

  • 木卯彳亍 2023-01-04 15:09
    关注
    
    
    <!--示例代码-->
    <template>
     <el-select v-model="value" placeholder="请选择">
        <el-option-group
          v-for="group in sizes"
          :key="group.label"
          :label="group.label">
          <el-option
            v-for="item in group.options"
            :key="item.value"
            :label="item.label"
            :value="item.value">
          </el-option>
        </el-option-group>
      </el-select>
    </template>
    <script>
    export default {
      data() {
        return {
         sizes:[],
          value: ''
        };
      },
      created(){
      },
      mounted() { 
      },
      beforeCreate() {
        this.$nextTick(() => {
        this.sizes=[
        {
            label: "长度",
            options: [
                {
                    label: "1m",
                    value: "1m"
                },
                {
                    label: "2m",
                    value: "2m"
                },
                {
                    label: "3m",
                    value: "3m"
                }
            ]
        },
        {
            label: "颜色",
            options: [
                {
                    label: "红",
                    value: "红"
                },
                {
                    label: "黄",
                    value: "黄"
                },
                {
                    label: "蓝",
                    value: "蓝"
                },
                {
                    label: "绿",
                    value: "绿"
                },
                {
                    label: "紫",
                    value: "紫"
                }
            ]
        }
        ]  
        })
      },
      methods: {
        },
      }
    
    </script>
    

    不想用下面这样异步的话,就把赋值放到created里面

    this.$nextTick
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月12日
  • 已采纳回答 1月4日
  • 创建了问题 1月4日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效