vue 如何在v-for中插入组件?

<template>
    <div>
        <ul>
            <template v-for="item in items">
                <li v-if="item.flag">
                    <!-- [已解决,如下]这里怎样调用DemoModel组件? -->
                    <component :is="item.model"></component>
                </li>
                <li v-else >{{ item.text }}</li>
            </template>
        </ul>
    </div>
</template>

<script>
// DemoModel 这里只是例子,实际组件名不会是 1-n
import DemoModel1 from "./demo-model1";
// ...
import DemoModelN from "./demo-modeln";

export default {
    data() {
        return {
            items:[
                {
                    text: "item 1",
                    flag: false
                },
                // ...
                {
                    text: "item n",  // 假定 n > 100,请不要考虑手写html
                    flag: false
                },
                {
                    text: "model 1",
                    flag: true,
                    model: DemoModel1
                },
                // ...
                {
                    text: "model n",
                    flag: true,
                    model: DemoModelN
                },
            ]
        }
    },
    components: {
        DemoModel1, 
        //...
        DemoModelN
    }
}
</script>

我现在需要动态的创建组件,以上代码为简化版本,请问该怎么实现呢?

阅读 7.5k
2 个回答
新手上路,请多包涵

<li v-if="item.flag">

 <DemoModel+index+1></DemoModel+index+1>

</li>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题