组件之全局组件

//注意:需要在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. Spring中@Resource注解报错

    描述:Spring框架中,@Resource注解报错,在书写时没有自动提示 解决方法:因为maven配置文件的pom.xml文件中缺少javax.annotation的依赖,在pom.项目路中加入依赖 ...

  2. Mybaits 源码解析 (六)----- 全网最详细:Select 语句的执行过程分析(上篇)(Mapper方法是如何调用到XML中的SQL的?)

    上一篇我们分析了Mapper接口代理类的生成,本篇接着分析是如何调用到XML中的SQL 我们回顾一下MapperMethod 的execute方法 public Object execute(SqlS ...

  3. CMMS系统中的物联监测

    有条件的设备物联后,可时实查看设备运行状态,如发现异常,可提前干预.

  4. [考试反思]0825NOIP模拟测试30:没落

    AB卷,15人. Lrefrain rank#1 179 skyh rank#2 122 116 108 54 42虽说还是不怎么样,但是有好转的迹象. 开卷审题,T1是个(假)期望,感觉也许还可做. ...

  5. [考试反思]0719NOIP模拟测试6 + 0722NOIP模拟测试7

    连续爆炸,颇为愉快. 第6次:Rank #4 第7次:Rank #9 对于第6次考试,个人比较满意,因为T1只是差了一个卡常. 因为在考试前两天刚讲了矩阵,满脑子都是矩阵,还想到了循环矩阵优化. 整个 ...

  6. WordPress代码高亮插件SyntaxHighlighter终极使用详解

    子曰: 工欲善其事,必先利其器.作为码农一枚,再加上站长这个已经不再光鲜的称呼,岂能没有一款经济实用.操作简单.而且功能必须强大.样式也必须好看的Wordpress代码高亮插件?!作为一个视代码如生命 ...

  7. Matlab 文件格式化/Matlab Source File Formator

    由于需要使用到别人编写的Matlab代码文件,但是呢不同的人有不同的风格,有的写得就比较糟糕了. 为了更好地理解代码的内容,一个比较美观的代码会让人身心愉悦. 但是在网上并没有找到一个比较好的实现,此 ...

  8. [Verilog] 从系统时钟转换出想要的时钟

    如何50MHZ时钟转换出一个250KHZ的时钟出来? 假如系统时钟是50MHZ,然后想得到250KHZ的新时钟,那么50MHZ / 250KHZ = 200倍,然后令k=200,程序如下: ; :] ...

  9. SpringBoot基本配置详解

    SpringBoot项目有一些基本的配置,比如启动图案(banner),比如默认配置文件application.properties,以及相关的默认配置项. 示例项目代码在:https://githu ...

  10. [spark程序]统计人口平均年龄(本地文件)(详细过程)

    一.题目描述 (1)编写Spark应用程序,该程序可以在本地文件系统中生成一个数据文件peopleage.txt,数据文件包含若干行(比如1000行,或者100万行等等)记录,每行记录只包含两列数据, ...