vue 循环加载动态组件以及传值
今天遇到一个需求,某个页面是个动态页面,由多个子组件构成。
之前我们的做法是将N个需要的组件import进主页面,然后引用一下即可。但是现在遇到的问题是, 这个动态页面存在多个业务,有的业务需要某几个组件,有的不需要,不同的业务需要的子组件是不同的。也就是说,如果我把所有需要的子组件全部import进去,就会存在一些用不上的情况,那么这个动态页面就会变成一个大而全的臃肿页面,这个当然是我们不期望看到的。
于是,我就在想是否可以根据我页面上传递的参数去循环出我需要的组件?
首先说下,需求是这个页面是根据某个code,得出一个组件集合,根据这个集合,加载出所需组件。完成页面的可配置化,动态加载。
网上一搜,还真有,综合之下给出如下方案:
首先我有一个app.vue,是我的的主页面,另外还有三个子组件a、b、c,app.vue和a.vue(b,c同理)里代码如图:
首先在页面放置component标签,里面配套v-for标签用于循环组件。
然后我在components方法里定义了我需要导入的组件,这时候只是导入,并没有在页面注册。
最后定义集合allComponents,这个集合是当前页面需要加载的组件集合,在实际项目中,这个集合是我根据业务code得来的,这里只是演示所以把集合写死了,实际上集合可能是N个元素,那么for的时候就会for出N个组件,就实现了组件的动态加载。
组件加载出来以后就涉及到传值了,和正常情况一样,给component标签加上自定义属性,如图,我加的是data属性,值等于我自定义的test变量,实际项目中这个换成自己的业务变量即可。
由于是component标签配上for循环加载的组件,那么在组件传值的时候,其实是共用一套的,就是传给a,b,c的参数是一样的,实际上a,b,c组件需要的参数各不相同,不过这也不影响,我们在子组件进行接收的时候,针对各自需要的参数进行接收就好了。
以上,就是整个动态组件,进行循环加载,以及组件传值的实例。
vue 循环加载动态组件以及传值的更多相关文章
- vue数据加载等待组件
关于loading组件的. loading.vue <template> <div class="loading"> <div class=" ...
- vue 异步加载远程组件(支持编译less语法)
本代码已组件化,可以直接使用. 说明:本组件可以直接解析.vue文件,为了支持less语法解析,在组件中引入less.js,可在less官网下载. 组件代码 <template> < ...
- Vue动态加载异步组件
背景: 目前我们项目都是按组件划分的,然后各个组件之间封装成产品.目前都是采用iframe直接嵌套页面.项目中我们还是会碰到一些通用的组件跟业务之间有通信,这种情况下iframe并不是最好的选择,if ...
- netcore实践:跨平台动态加载native组件
缘起netcore框架下实现基于zmq的应用. 在.net framework时代,我们进行zmq开发由很多的选择,比较常用的有clrzmq4和NetMQ. 其中clrzmq是基于libzmq的Int ...
- vue 项目, 通知子组件更新,父组件中每次点击按钮重新加载子组件,(重新生成dom 元素)
vue是组件化开发的项目,很多情况下会把公共组件提取出来,来减少代码量,提高开发效率,和以后更好的可维护性.很多情况下,父组件中都会引用子组件这种情况.通过给在父组件中引用的子组件标签上添加属性,来渲 ...
- vue 动态组件的传值
vue项目开发中会用到大量的父子组件传值,也会用到动态组件的传值,常规子组件获取父组件的传值时,第一次是获取不到的,这时候有两种解决方案 第一种: 父组件向子组件传的是一个json对象,ES6的方法O ...
- 表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这种写法就是把组件嵌套改为配置方式
表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这 ...
- 实现LoaderCallbacks接口动态循环加载网上图片并展示在手机屏幕上 ...
1.布局xml文件 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/re ...
- LoadLibrary加载动态库失败
[1]LoadLibrary加载动态库失败的可能原因以及解决方案: (1)dll动态库文件路径不对.此场景细分为以下几种情况: 1.1 文件路径的确错误.比如:本来欲加载的是A文件夹下的动态库a.dl ...
随机推荐
- Redission
https://github.com/redisson/redisson/wiki/6.-%E5%88%86%E5%B8%83%E5%BC%8F%E5%AF%B9%E8%B1%A1#61-%E9%80 ...
- LeetCode:178.分数排名
题目链接:https://leetcode-cn.com/problems/rank-scores/ 题目 编写一个 SQL 查询来实现分数排名.如果两个分数相同,则两个分数排名(Rank)相同.请注 ...
- **表示python中的意思
**表示python中的意思 **表示python中的电源操作传递参数和定义参数时(所谓的参数是调用函数时传入的参数,参数是定义函数时定义函数的参数),还可以使用两个特殊语法:“`*`**”. 调用函 ...
- C++ STL 之 list
#include <list> #include <iostream> using namespace std; // 打印list元素 void PrintList(list ...
- 14.JdbcUtils框架
1.编写自己的JdbcUtils 框架 2.使用 dbUtils 框架 1.视频中自己编写的JdbcUtils框架差不多就是dbUtils框架 2.使用 使用dbutils框架完成curd,以及批处理 ...
- axios 简单二次封装
import axios from 'axios' import { Message } from 'element-ui'; // 设置baseURL //axios.defaults.baseUR ...
- Centos7安装dig命令
作者: jwj 时间: 2018-10-17 分类: 服务器 最近做一个项目,需要用到Gmail邮箱发送邮件,但发现发送不出去.排查问题时,需要用到dig命令,但使用时,却提醒我dig命令不存在~那就 ...
- Hadoop_18_MapRduce 内部的shuffle机制
1.Mapreduce的shuffle机制: Mapreduce中,map阶段处理的数据如何传递给Reduce阶段,是mapreduce框架中最关键的一个流程,这个流程就叫shuffle 将mapta ...
- rpm的specs学习
参考 制作rpm包: https://wangbin.io/blog/it/yum-rpm-make.html linux rpm安装mysql: https://www.jianshu.com ...
- swagger2注解使用方法
swagger注解整体说明: @Api:用在请求的类上,表示对类的说明 tags="说明该类的作用,可以在UI界面上看到的注解" value="该参数没什么意义,在UI界 ...