【问题标题】:How to dynamically add components to grid?如何将组件动态添加到网格?
【发布时间】:2021-11-30 10:15:27
【问题描述】:

我使用v-for 创建了一个网格。我需要向我创建的每一列添加组件,每一列都在单独的列中。我在脚本中创建了view,我在其中存储组件,但我仍然无法将它们分别添加到每一列:

<template>
  <v-container fluid>
    <v-row dense>
      <v-col
        v-for="n in 2"
        :key="n"
        :cols="n === 1 ? 2 : 10">

          <v-card outlined tile>
             <component :is="view"></component>
          </v-card>

      </v-col>
    </v-row>
  </v-container>
</template>

<script>
import XYZ from '../views/XYZ.vue';
import AAA from '../views/AAA.vue';

export default {
  name: 'Project',
  data: {
      view: 'dynamic_views', 
  },
  components: {
    'dynamic_views': {
      XYZ,
      AAA
    }
  },
};
</script>

【问题讨论】:

    标签: vue.js vuetify.js


    【解决方案1】:

    将组件直接放在components 选项中,然后创建一个名为componentNames 的数据属性,您应该循环它:

    
    import XYZ from '../views/XYZ.vue';
    import AAA from '../views/AAA.vue';
    
    export default {
      name: 'Project',
       data:{
          componentNames:['XYZ','AAA']
      },
      components: {
          XYZ,AAA
       
      },
    };
    
    
    
    

    在模板中:

    
    <template>
      <v-container fluid>
        <v-row dense>
          <v-col
            v-for="(comp,n) in componentNames"
            :key="n"
            :cols="n === 1 ? 2 : 10">
    
              <v-card outlined tile>
                 <component :is="comp"></component>
              </v-card>
    
          </v-col>
        </v-row>
      </v-container>
    </template>
    
    

    【讨论】:

    • 好的,在我的真实应用程序中,组件的调用方式不同,比如 XYZ 和 AAA。我怎样才能遍历它们?我不能使用view_${n}。我将示例更改为新的组件名称。
    • 请检查我编辑的答案
    • 不幸的是它不起作用。 v-for 不创建列
    • 好的,我找到了一个解决方案——你需要使用data() {},而不是使用data: {}。不知道为什么,但它现在有效。而且枚举从 0 开始,而不是 1,因此需要将条件更改为 :cols="n === 0 ? 2 : 10"
    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 2023-03-14
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多