组件之全局组件

//注意:需要在Vue实例化之前注册全局组件,使用Vue.component("组件名",{ template:`组件模板` })
Vue.component("show-name",{
template:`
<div title="注意, 组件模板的根元素必须有且只有一个">
<p>ViavaCos</p>
</div>
`
}) var vm = new Vue({
el:'#app',
data:{
name:'ViavaCos'
},
methods:{}
})

组件之局部组件

// 套路和全局组件一样,这两者只是注册的位置不同,作用的范围也不一样罢了 使用components选项来注册局部
var vm = new Vue({
el:'#app',
data:{},
components:{
'show-name':{
template:`
<div title="注意, 组件模板的根元素必须有且只有一个">
<p>ViavaCos</p>
</div>
`
}
}
})

组件通信之父组件传递值给子组件

// 父组件传递值给子组件通过自定义属性传递,然后子组件通过porps选项来接收所传递过来的值

一共三个步骤:

  1. 在子组件的自定义标签上设置自定义属性,值为父组件需要从传递的值(变量)

  2. 在子组件的实例上设置一个叫props的属性,用来接收父组件传递过来的值,props选项是一个字符串数组

  3. 由于props选项也被vue实例代理了,所以直接在当前子组件实例中使用this.自定义属性名就可使用了

     <div id="app">
    // 1. 设置自定义属性
    <show-city :city="city"></show-city>
    </div>
    <script src="./vue.js"></script>
    <script>
    var vm = new Vue({
    el: '#app',
    data: {
    city: ["北京", "上海", "天津"]
    },
    methods: {},
    components: {
    'show-city': {
    // 3.使用
    template: `
    <div>
    <p v-for="item in city">{{item}}</p>
    </div>
    `,
    // 2.接收值
    props: ['city']
    }
    }
    });
    </script>

组件通信之子组件传递给父组件

一共五个步骤:

  1. 在子组件的组件模板上设置一个点击事件,用来触发自定义事件用于传值

  2. 在子组件的methods中设置点击事件的事件处理程序:内容为执行自定义事件this.$emit("自定义事件名", 若干个参数)

  3. 在父组件管理的视图,也就是书写子组件的自定义标签的地方,在这个标签上设置自定义事件的监听(用v-on指令就行)

  4. 提前在父组件的数据对象data中定义一个容器来接收子组件传递过来的值

  5. 在父组件的methods中设置监听自定义事件的事件处理程序:由于事件触发了,会有写好的若干个参数传递过来,所以在这里处理一下。将传递来的值用方才定义好的容器接收,然后就可以放心使用这个子组件传递来的值了

      <div id="app">
    <!-- 3. 监听事件 -->
    <show-city @getcity='exeCity' v-for="item in city" :city="item" :tcity="tcity"></show-city>
    </div> <script src="./vue.js"></script>
    <script>
    var vm = new Vue({
    el: '#app',
    data: {
    city: ["北京", "上海", "天津"],
    // 4. 定义容器接收
    tcity: ''
    },
    methods: {
    // 5. 赋值给tcity这个容器
    exeCity(data) {
    this.tcity = data;
    }
    },
    components: {
    'show-city': {
    // 1. 设置自定义事件
    template: `
    <div>
    <p @click="toFather" :class="{select:isSelect}" >{{city}}</p>
    <input text="text" v-model="isSelect">
    </div>
    `,
    props: ['city', 'tcity'],
    methods: {
    toFather() {
    // 2. 触发自定义事件
    console.log('被点击了')
    this.$emit('getcity', this.city);
    },
    },
    computed: {
    isSelect() {
    return this.city === this.tcity;
    }
    }
    } }
    });
    </script>

Vue之组件及组件通信的更多相关文章

  1. 第四节:Vue表单标签和组件的基本用法,父子组件间的通信

    vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset=&q ...

  2. Vue.js学习 Item11 – 组件与组件间的通信

    什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有 ...

  3. Vue.js组件之间的通信

    导语:组件之间的关系不外乎两种, 父子组件和非父子组件,本文将对两类组件之间的通信方式进行详细阐述. 父子组件间的通信 通信方式1(单向绑定): Props down, Events up (建议使用 ...

  4. vue 基础-->进阶 教程(3):组件嵌套、组件之间的通信、路由机制

    前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零开始,教给大家vue的基础.高级操作.组件 ...

  5. 【Vue】利用父子组件间通信实现一个场景

    组件间通信是组件开发的,我们既希望组件的独立性,数据能互不干扰,又不可避免组件间会有联系和交互. 在vue中,父子组件的关系可以总结为props down,events up: 在vue2.0中废弃了 ...

  6. vue工程利用pubsub-js实现兄弟组件之间的通信

    前言 项目是基于vue-cli创建的,不会搭建vue开发环境的同学可以百度,这里不再赘述. 步骤流程 vue项目搭建完成之后的文件图如下: 我的上一篇博客已经详细叙述vue工程中各个文件的作用,不清楚 ...

  7. vue组件之间的通信

    1.父组件给子组件传递数据 <body> <div id="app"> 父组件:{{total}} <br> <son-component ...

  8. Vue组件以及组件之间的通信

    一.组件的注册 1. 全局组件注册 1. 注册基本语法Vue.component Vue.component("my_header", { template: `<div&g ...

  9. Vue 组件&组件之间的通信 之 非父子关系组件之间的通信

    Vue中不同的组件,即使不存在父子关系也可以相互通信,我们称为非父子关系通信: 我们需要借助一个空Vue实例,在不同的组件中,使用相同的Vue实例来发送/监听事件,达到数据通信的目的: 实例: 初始加 ...

  10. Vue 组件&组件之间的通信 父子组件的通信

    在Vue的组件内也可以定义组件,这种关系成为父子组件的关系: 如果在一个Vue实例中定义了component-a,然后在component-a中定义了component-b,那他们的关系就是: Vue ...

随机推荐

  1. Java内存模型(JMM)详解

    在Java JVM系列文章中有朋友问为什么要JVM,Java虚拟机不是已经帮我们处理好了么?同样,学习Java内存模型也有同样的问题,为什么要学习Java内存模型.它们的答案是一致的:能够让我们更好的 ...

  2. Python网络爬虫之cookie处理、验证码识别、代理ip、基于线程池的数据爬去

    本文概要 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 引入 有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时, ...

  3. ansible剧本之playbook操作

    ansible 剧本 yaml介绍: 是一个编程语言 文件后缀名 yaml yml 数据对应格式: 字典: key: value 列表: [] - ansible-playbook命令格式 执行顺序: ...

  4. 爬虫之scrapy简介

    原始的爬虫流程:效率低.同步.阻塞 scrapy执行流程:效率高.异步.非阻塞 scrapy的概念 scrapy是一个爬虫框架 开发速度快 稳定性高 性能优越 scrapy的流程 1. 爬虫模块(Sp ...

  5. RocketMQ 消息发送system busy、broker busy原因分析与解决方案

    目录 1.现象 2.原理解读 2.1 RocketMQ 网络处理机制概述 2.2 pair.getObject1().rejectRequest() 2.3 漫谈transientStorePoolE ...

  6. Java学习总结之基本数据类型

    Java的数据类型分为基本数据类型和引用数据类型, 今天总结的是基本数据类型.在Java中,一共有八种基本数据类型,分别为整数类型(byte,short,int,long).浮点类型(float,do ...

  7. python学习之【第四篇】:Python中的列表及其所具有的方法

    1.前言 列表是Python中最常用的数据类型之一,是以[ ]括起来,每个元素以逗号隔开,而且里面可以存放各种数据类型,而且列表是有序的,有索引值,可切片,方便取值. 2.创建列表 li = ['he ...

  8. 一个帮助理清思路的神奇工具--debug

    今天在回顾复习之前的知识的时候,对嵌套循环犯了迷糊,于是我使用了debug这个方法,不仅让我弄清楚嵌套循环输出结果是如何得来,也让我明白了具体流程. 在这里,IDE我使用的是PyCharm,自然用它自 ...

  9. Java锁-Synchronized深层剖析

    Java锁-Synchronized深层剖析 前言 Java锁的问题,可以说是每个JavaCoder绕不开的一道坎.如果只是粗浅地了解Synchronized等锁的简单应用,那么就没什么谈的了,也不建 ...

  10. eclipse中springmvc框架出现404

    出现404报错信息: 1.我出现的错误是配置没问题,找了一圈发现自己单词拼错了,导致运行不了,出现404 2.配置问题: jar包:首先导入spring 的jar包15个,log4j两个,junit两 ...