在项目中常常会遇到一个组件中引入好几个子组件的情况,而引入的子组件和子组件之间又需要有数据交互,如果使用父组件作为桥梁进行数据交互这个也是可以的,只是有些麻烦,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. MyBatis详细代码来啦!

    家人们,改代码改到现在真的绝了,终于是改出来了,但是对于某些判断性的小问题还没写,细节性满满的增删改查终于实现啦! 目录结构 各个文件的代码: //SqlSessionFactoryUtils.jav ...

  2. ovs-dpdk:revalidator源码解析

    revalidator是做什么的?需要知道哪些东西? 有关于revalidator需要弄明白的是以下三个问题: 通过ovs-vsctl list open_vs可以看到other_config里面有两 ...

  3. Unity C# IEnumrator 与 async 有的区别

    前言 IEnumerator 和 async 是在 Unity 和 C# 中处理异步编程的两种不同方法.它们各自有不同的使用场景和优缺点. IEnumerator IEnumerator 是 C# 中 ...

  4. 可视化—AntV G6 紧凑树实现节点与边动态样式、超过X条展示更多等实用小功能

    通过一段时间的使用和学习,对G6有了更一步的经验,这篇博文主要从以下几个小功能着手介绍,文章最后会给出完整的demo代码. 目录 1. 树图的基本布局和使用 2. 根据返回数据的属性不同,定制不一样的 ...

  5. 手动实现一个call bind

    一.call的实现(apply类似) //完成版 Function.prototype.setCall = function (obj){ var object = obj || window let ...

  6. Spring事务——传播性

    传播性 事务传播行为是为了解决业务层方法之间互相调用的事务问题,当一个事务方法被另一个事务方法调用时,事务该以何种状态存在?例如新方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运 ...

  7. 华为 A800-9000 服务器 离线安装MindX DL

    MindX DL(昇腾深度学习组件)是支持 Atlas 800 训练服务器.Atlas 800 推理服务器的深度学习组件参考设计,提供昇腾 AI 处理器资源管理和监控.昇腾 AI 处理器优化调度.分布 ...

  8. python获取本地ip地址1

    import socket def get_host_ip(): """ 查询本机ip地址 return: ip """ try: s = ...

  9. jquery全选,全不选,反选,获取选择框的值

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. phpcm v9 任意调用分页/phpcm v9首页调用分页不起作用或者乱码

    默认如下: {pc:content action="lists" catid="1" num="10" order="id DES ...