vue2.0动态添加组件

方法一、<template>
    <input type="text" v-model=‘componentName‘>
    <button @click=‘add‘>click me to add a component</button>
</template>

<script>
    // 引入要添加的所有组件
    import component1 from ‘./components/component1.vue‘
    import component2 from ‘./components/component2.vue‘
    export default {
        data: function() {
            return {
                allComponents: [],
                componentName: ‘‘
            }
        },
        components: {
                // 注册所有组件
                component1,
                component2
        }
        methods: {
            add: function() {
                this.allComponents.push(this.componentName)
                // 重置输入框
                this.componentName = ‘‘
            },
            render: function(h) { // h 为 createElement 函数,接受三个参数
                // tag
                // data
                // children 具体看文档吧
                return h(‘div‘,this.allComponents.map(function(componentName) {
                    return h(componentName)
                }))
            }
        }
    }
</script>
方法二、

html

  <div id="app">
    <button @click="add(‘a-component‘, ‘test‘)">Add A</button>
    <button @click="add(‘b-component‘, ‘test‘)">Add B</button>
    <ul>
      <li :is="item.component" :text="item.text" v-for="item in items"></li>
    </ul>
  </div>

javascript

var AComponent = Vue.extend({
  props: [‘text‘],
  template: ‘<li>A Component: {{ text }}</li>‘
})

var BComponent = Vue.extend({
  props: [‘text‘],
  template: ‘<li>B Component: {{ text }}</li>‘
})

new Vue({
  el: ‘#app‘,
  components: {
    ‘a-component‘: AComponent,
    ‘b-component‘: BComponent,
  },
  data: {
    items: []
  },
  methods: {
    add(component, text) {
      this.items.push({
        ‘component‘: component,
        ‘text‘: text,
      })
    }
  }
})
方法三、

我是写在父组件中的:

Vue.component(‘mycontent‘, {
        props: [‘content‘],
        data() {
            return {
                coms: [],
            }
        },
        render: function(h) {
            this.coms = [];
            for(var i = 0; i < this.content.length; i++) {
                this.coms.push(h(this.content[i], {}))
            }
            return h(‘div‘, {},
                this.coms)
        },
    });

调用的时候


    <mycontent v-bind:content="content"></mycontent>

那么父组件中的content变化时,就会动态加载组件了

 
时间: 2024-10-11 18:03:19

vue2.0动态添加组件的相关文章

vue2.0 动态切换组件

组件标签是Vue框架自定义的标签,它的用途就是可以动态绑定我们的组件,根据数据的不同更换不同的组件. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script type="text/javascript" src="../vue2.2.js"></script> <t

Vue2.0的通用组件

饿了么基于Vue2.0的通用组件开发之路(分享会记录) Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库.今天我们要分享的就是开发 Element 的一些心得. 官网:http://element.eleme.io/#/github:https://github.com/ElemeFE/element ## 设计目的 大部分项目起源都是源于业务方的需求,Element 也是一样.随着公司业务发展,内部开始衍

Angular使用总结 --- 通过指令动态添加组件

之前自己写的公共组件,都是会先引入,需要调起的时候再通过service控制公共组件状态.值.回调函数什么的.但是有一些场景不适合这种方式,还是动态添加组件更加好.通过写过的一个小组件来总结下. 创建组件 场景:鼠标移动到图标上时,展示解释性的说明文字.那就需要创建一个普通的tooltip组件.如下: <aside class="hover-tip-wrapper"> <span>{{tipText}}</span> </aside> HT

Android使用addView动态添加组件

在项目开发中,我们经常需要进行动态添加组件,其中可添加的部分有两项:布局和组件 其中,添加的布局主要有RelativeLayout型(相对布局)的和LinearLayout(线性布局) 添加的组件主要有文本显示框,编辑框,按钮等组件. 下面,就让我们来进行实现: 首先我们创建一个新的项目,删除MainActivity.class中没有的代码,仅留下protected void onCreate(Bundle savedInstanceState)函数 往布局文件中添加一个新的组件: 1. add

饿了么基于Vue2.0的通用组件开发之路(分享会记录)

Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库.今天我们要分享的就是开发 Element 的一些心得. 官网:http://element.eleme.io/#/github:https://github.com/ElemeFE/element ## 设计目的 大部分项目起源都是源于业务方的需求,Element 也是一样.随着公司业务发展,内部开始衍生出很多后台系统,UED 部门也接到越来越多的设计需求,

用webpack2.0构建vue2.0单文件组件超级详细精简实例

npm init -y 初始化项目  //-y 为自动生成package.json,如果需要自行配置,去掉-y即可 安装各种依赖项 npm install --save vue 安装vue2.0 npm install --save-dev webpack webpack-dev-server 安装webpack以及webpack测试服务器 //默认安装最新版2.x版本 npm install --save-dev babel-core babel-loader babel-preset-es2

一款基于vue2.0的分页组件---写在页面内

通过 Vue2.0 实现的分页 可自由设置分页显示的多少.上一页.下一页.省略号等,也可直接输入跳转到的页码进行跳转,分页的样式可自由调整 // 1.页面的 head 部分,需要设计好页面的样式 1 .page { 2 font-weight: 900; 3 height: 40px; 4 text-align: center; 5 color: #888; 6 margin: 20px auto 0; 7 background: #f2f2f2; 8 } 9 10 .pagelist { 11

Android笔记(六十一)动态添加组件

想要一个功能,点击按钮,可以在已有的布局上,新添加一组组件. 动态的创建组件,本质上还是创建组件,只不过是在程序中根据逻辑来创建.大致步骤是找到要创建控件的位置,然后将要创建的组件添加进去. 看代码: MainActivity.java package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Bu

动态添加组件(XML)

1.利用LayoutInflater的inflate动态加载XMLmLinearLayout = (LinearLayout)findViewById(R.id.LinearLayout_ID);LayoutInflater layoutInflater = LayoutInflater.from(context);View view = layoutInflater.inflate(resource--需要加载的XML, null);XML:resource = R.layout.XML-Na