Vue之组件及组件通信
组件之全局组件
//注意:需要在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选项来接收所传递过来的值
一共三个步骤:
在子组件的自定义标签上设置自定义属性,值为父组件需要从传递的值(变量)
在子组件的实例上设置一个叫props的属性,用来接收父组件传递过来的值,props选项是一个字符串数组
由于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>
组件通信之子组件传递给父组件
一共五个步骤:
在子组件的组件模板上设置一个点击事件,用来触发自定义事件用于传值
在子组件的methods中设置点击事件的事件处理程序:内容为执行自定义事件this.$emit("自定义事件名", 若干个参数)
在父组件管理的视图,也就是书写子组件的自定义标签的地方,在这个标签上设置自定义事件的监听(用v-on指令就行)
提前在父组件的数据对象data中定义一个容器来接收子组件传递过来的值
在父组件的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之组件及组件通信的更多相关文章
- 第四节:Vue表单标签和组件的基本用法,父子组件间的通信
vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset=&q ...
- Vue.js学习 Item11 – 组件与组件间的通信
什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有 ...
- Vue.js组件之间的通信
导语:组件之间的关系不外乎两种, 父子组件和非父子组件,本文将对两类组件之间的通信方式进行详细阐述. 父子组件间的通信 通信方式1(单向绑定): Props down, Events up (建议使用 ...
- vue 基础-->进阶 教程(3):组件嵌套、组件之间的通信、路由机制
前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零开始,教给大家vue的基础.高级操作.组件 ...
- 【Vue】利用父子组件间通信实现一个场景
组件间通信是组件开发的,我们既希望组件的独立性,数据能互不干扰,又不可避免组件间会有联系和交互. 在vue中,父子组件的关系可以总结为props down,events up: 在vue2.0中废弃了 ...
- vue工程利用pubsub-js实现兄弟组件之间的通信
前言 项目是基于vue-cli创建的,不会搭建vue开发环境的同学可以百度,这里不再赘述. 步骤流程 vue项目搭建完成之后的文件图如下: 我的上一篇博客已经详细叙述vue工程中各个文件的作用,不清楚 ...
- vue组件之间的通信
1.父组件给子组件传递数据 <body> <div id="app"> 父组件:{{total}} <br> <son-component ...
- Vue组件以及组件之间的通信
一.组件的注册 1. 全局组件注册 1. 注册基本语法Vue.component Vue.component("my_header", { template: `<div&g ...
- Vue 组件&组件之间的通信 之 非父子关系组件之间的通信
Vue中不同的组件,即使不存在父子关系也可以相互通信,我们称为非父子关系通信: 我们需要借助一个空Vue实例,在不同的组件中,使用相同的Vue实例来发送/监听事件,达到数据通信的目的: 实例: 初始加 ...
- Vue 组件&组件之间的通信 父子组件的通信
在Vue的组件内也可以定义组件,这种关系成为父子组件的关系: 如果在一个Vue实例中定义了component-a,然后在component-a中定义了component-b,那他们的关系就是: Vue ...
随机推荐
- Linux 命令之 crontab
crontab 简介 crontab 主要用于需要管理周期执行定时任务的场景 crontab 安装 (有些系统默认已经带了 crontab,无需安装的朋友可以直接跳过本节) 安装: yum insta ...
- 通过 Django Pagination 实现简单分页
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 当博客上发布的文章越来越多时,通常需要进行分页显示,以免所有的文章都堆积在一个页面, ...
- 通过IDEA快速定位和排除依赖冲突
前言 我们程序员在开发的时候经常会遇到各种各样的 BUG 问题,其中大部分是业务逻辑异常,还有一些是代码书写不规范造成的异常例如:NullPointException(NPE),IndexOutOfB ...
- ASP.NET Core 3.0 gRPC 拦截器
目录 ASP.NET Core 3.0 使用gRPC ASP.NET Core 3.0 gRPC 双向流 ASP.NET Core 3.0 gRPC 拦截器 一. 前言 前面两篇文章给大家介绍了使用g ...
- Android so 文件
要点 不同的 CPU 架构需要不同的 so 文件 NDK平台不是后向兼容的,而是前向兼容的. ABI 的概念,每一个 Cpu架构对应一个 ABI(Application Binary Interfac ...
- 爬虫学习--Urllib库基本使用 Day1
一.Urllib库详解 1.什么是Urllib Python内置的HTTP请求库 urllib.request 请求模块(模拟实现传入网址访问) urllib.error ...
- GC四大算法
引言: 前面的文章提到,Heap包括了PSYoungGen.ParOldGen.Metaspace.JVM 在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的都是新生代.由于新生代 ...
- python中实例方法,类方法,静态方法简单理解
按照字面名称来理解的话: 实例方法就是实例化对象的方法,绑定在实例对象上 类方法就是类自己的方法,不需要实例化对象,类自己就是对象,直接绑定在类上 静态方法就是普通的函数,函数作为对象,不过是封装在类 ...
- jquery序列帧播放(支持视频自动播放和不是全屏播放)
jquery序列帧播放 这个弊端就是到时候需要升级下带宽 至少10MB 保证不卡.. ae导出序列真的时候 每秒10帧 就是代码每秒播放10张图片 尺寸适当的可以压小点<pre> < ...
- 关于MXNet
关于人工智能,机器学习,深度学习 三者关系:从宏观到微观. 机器学习是人工智能的一部分,深度学习是机器学习的一部分. 基础:大数据. 关于深度学习 深度学习基于神经网络, 关于神经网络:通过叠加网络层 ...