在项目中常常会遇到一个组件中引入好几个子组件的情况,而引入的子组件和子组件之间又需要有数据交互,如果使用父组件作为桥梁进行数据交互这个也是可以的,只是有些麻烦,so最理想的是子组件和子组件自己去交互,记录一下使用子组件和子组件传参并模拟v-model的一个过程

一、创建项目

先使用cli 创建一个测试项目

二、添加依赖

在 package.json中添加所需的element依赖


"dependencies": {
"element-ui": "^2.10.1"
}

main.js引入


import 'element-ui/lib/theme-chalk/index.css'
import ElementUI from 'element-ui'
Vue.use(ElementUI);

三、创建组件

1. 定义header_component


<template>
<div class="nav-top">
<div class="go-back" >
<i class="el-icon-arrow-left icon-back"></i>
</div>
<div class="map-name" >{{name}}</div>
<div class="icon-style">
<i class="el-icon-edit icon-size" @click="showEditDialog"></i>
</div>
</div>
</template> <script type="text/ecmascript-6">
import BToB from './b_to_b.js'; export default {
name: "header_component",
data(){
return{
name:'春节联欢晚会'
}
},
created(){
this.listenBtoBFromEdit();
},
methods:{
showEditDialog(){
BToB.$emit("switch_dialog",true);
},
listenBtoBFromEdit(){
BToB.$on("update_template_params",val =>{
this.name = val;
})
}, }
}
</script>

2. 定义edit_component


<script type="text/ecmascript-6">
import BToB from './b_to_b.js';
export default {
name: "edit_component",
data(){
return{
form: {
name: '',
region: '',
date1: '',
date2: '',
delivery: false,
type: [],
resource: '',
desc: ''
},
dialogVisible:false
}
},
watch:{
form:{
handler(newValue) {
BToB.$emit("update_template_params",newValue.name);
},
deep: true
}
},
created() {
this.listenBtoB();
},
methods:{
listenBtoB(){
BToB.$on("switch_dialog",val =>{
this.dialogVisible = val;
})
}
}
}
</script>

3. 定义代理js b_to_b.js


import vue from 'vue';
export default new vue();

4. 修改helloWorld 组件页面

<template>
<div class="container">
<header-component></header-component> <edit-component></edit-component>
</div>
</template> <script>
import HeaderComponent from "@/components/header_component";
import EditComponent from "@/components/edit_component";
export default {
methods: {
},
components:{
HeaderComponent,
EditComponent
}
}
</script> <style scoped>
.left-menu{
width: 230px;
height:calc(100% - 40px);
}
</style>

完整目录结构

最后运行测试如图

完整demo 地址 https://github.com/dengxiaoning/brother-to-brother

自定义组件模拟v-model的更多相关文章

  1. Android自定义组件系列【5】——进阶实践(2)

    上一篇<Android自定义组件系列[5]--进阶实践(1)>中对任老师的<可下拉的PinnedHeaderExpandableListView的实现>前一部分进行了实现,这一 ...

  2. Android开发之自定义组件和接口回调

    说到自定义控件不得不提的就是接口回调,在Android开发中接口回调用的还是蛮多的.在这篇博客开始的时候呢,我想聊一下iOS的自定义控件.在iOS中自定义控件的思路是继承自UIView, 在UIVie ...

  3. Android自定义组件

    [参考的原文地址] http://blog.csdn.net/l1028386804/article/details/47101387效果图: 实现方式: 一:自定义一个含有EditText和Butt ...

  4. 自定义组件之MoreListView

    前言 本文针对自定义组件进行一些分析.还是那句老话“授之于鱼不如授之以渔”.今天要讲的是一个自定义的可以分页的ListView. 网上都讲了些ListView分页的方法,那么为什么我在这里还需要自己写 ...

  5. axure复用-自定义组件,母版(模板)

    组件(控件)是用于设计线框图的用户界面元素.在组件(控件)面板中包含有常用的控件库,如按钮.图片.文本框等.从组件面板中拖动一个控件到线框图区域中,就可以添加一个组件.组件可以从一个线框图中被拷贝(C ...

  6. ExtJS 自定义组件

    主要参考的是官方文档 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  7. 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件

    博客地址 : http://blog.csdn.net/shulianghan/article/details/41520569 代码下载 : -- GitHub : https://github.c ...

  8. 如何在自定义组件中使用v-model

    文章属于速记,有错误欢迎指出.风格什么的不喜勿喷. 先来一个组件,不用vue-model,正常父子通信 <!-- parent --> <template> <div c ...

  9. 第三部分:Android 应用程序接口指南---第二节:UI---第十二章 自定义组件

    第12章 自定义组件 Android平台提供了一套完备的.功能强大的组件化模型用于搭建用户界面,这套组件化模型以View和 ViewGroup这两个基础布局类为基础.平台本身已预先实现了多种用于构建界 ...

  10. 仿照admin的stark自定义组件的功能实现

    仿照admin的stark自定义组件的功能实现:其中最主要的就是增删改查的实现 1.查:首先页面中显示表头和数据,都是动态的,而不是写死的. (1) 先看表头和表单数据:这个是查看的视图函数,但是为了 ...

随机推荐

  1. Ocelot的限流、熔断和负载均衡

    一.限流 想要在Ocelot中设置限流,需要在设置如下绿色所示: { "GlobalConfiguration": { "RateLimitOptions": ...

  2. java异常--基础内容

    java异常--基础内容 异常指程序运行中出现的不期而至的各种状况:文件找不到,网络连接失败,非法参数... 异常发生在程序运行期间,他影响了正常的程序执行流程. 三种类型异常(Exception): ...

  3. 地铁系统PC端代码

    代码顺序为项目文件顺序从上到下 package org.example.dao; import org.example.pojo.Station; import java.sql.ResultSet; ...

  4. 百度360搜索关键词提交.py(亲测有效)

    import requests keyword = "Python" try: kv = {'wd':keyword} # 百度 kv1 = {'q':keyword} # 360 ...

  5. 最新版本 Stable Diffusion 开源AI绘画工具之部署篇

    目录 AI绘画 本地环境要求 下载 Stable Diffusion 运行启动 AI绘画 关于 AI 绘画最近有多火,既然你有缘能看到这篇文章,那么相信也不需要我过多赘述了吧? 随着 AI 绘画技术的 ...

  6. ChatGPT 通识入门

    最近网络上对于Chat GPT的讨论热潮不断地膨胀,一个势必给整个人类社会带来新变革的科技和工具产生了.这个新的工具能够识别自然语言并能够理解上下文的语境,并能够具备人类思维的模型. 但是ChatGP ...

  7. ILLA Cloud: 调用 Hugging Face Inference Endpoints,开启大模型世界之门

    一个月前,我们 宣布了与 ILLA Cloud 与达成的合作,ILLA Cloud 正式支持集成 Hugging Face Hub 上的 AI 模型库和其他相关功能. 今天,我们为大家带来 ILLA ...

  8. day117:MoFang:宠物栏的功能实现&宠物道具的使用

    目录 1.宠物栏的功能实现 2.宠物道具的使用 1.宠物栏的功能实现 1. 宠物的显示 2. 宠物的使用 3. 宠物的饱食度 4. 宠物的开锁 1.服务端提供显示宠物的api接口 orchard/so ...

  9. day66:Linux:nginx+uwsgi+django跑python项目

    目录 0.uwsgi简述 1.使用uwsgi+django运行demo 2.nginx+uwsgi+django跑pythonav项目 0.uwsgi简述 1.什么是wsgi WSGI,全称Web S ...

  10. sql lag函数

    lag https://spark.apache.org/docs/latest/api/sql/#lag lag(input[, offset[, default]]) OVER (PARTITIO ...