1.组件定义

1.定义组件并引用

2.父组件向子组件传值

3.子组件向父组件传值

# 组件间传值:vuex (https://www.cnblogs.com/xiaonq/p/9697921.html

1.1什么是组件

  • Html中有组件,是一段可以被复用的结构代码
  • Css中有组件,是一段可以被复用的样式
  • Js中有组件,是一段可以被复用的功能
  • Vue中也有组件,指的就是一个模块,是一个独立的,完整的(包含html,css,js等),可以直接 拿来用

1.2组件特性

  • 组件的实例化对象,跟vue实例化对象一样,因此,我们也可以将vue实例化对象看成组件
  • 组件间是独立的,因此数据要独立存储,方法要独立定义, 彼此间不能共享 。

2.父组件向子组件传值

2.1 components/Child.vue定义子组件

<template>

 <div style="color: red">

<h1>子组件内容</h1>

<p>{{data}}</p>

</div>

</template>
<script>  export default {

// 子组件要使用父组件的数据,只需要一步,在 props中接收父组件的属性

props: ['data'],  // 接收父组件给子组件定义的属性

}

</scrip>

2.2 components/Father.vue定义父组件

<template>

<div>

<h1>父组件内容</h1>

父组件显示:{{msg}}

<!--3.第三步:把父组件的某一个属性传递给子组件-->

<Child

:data='msg'

></Child>

</div>

</template>
<script>

// @指定的是src路径  import Child from '@/components/Child'   // 1.第一步:在父组件中导入子组件

export default {

// 2.第二步:父组件中注册子组件

components: {

Child   },

data() {

return {

msg: '父组件的信息'

}

},    methods: {
  } } </script>

2.3 router/index.js中注册路由

import Father from '@/components/Father'  // @修饰符指的是 src目录
export default new Router({

routes: [

{ path: '/component', name: 'Father', component: Father },]

})

2.4测试

  • 子组件中可以通过定义props属性来接收父组件的数据

3.子组件向父组件传值

3.1 components/Child.vue子组件通过触发方法, 向父组件传值

<template>

<div>{{data}}

<button @click="emitfather">调用父组件方法</button>

</div>

</template>

<script>  export default {    props: ['data'], // 接收父组件给子组件定义的属性

methods: {

emitfather() {        console.log('调用emitfather方法')

//1.子组件调用父组件方法,并传值

// $emit 触发当前实例上的事件,也可以简单的理解为触发父组件上的事件(向上冒泡)

this.$emit('changeMsg', '子组件信息修改后的data信息,传递给父组件')

}

}

} </script>

3.2 components/Father.vue给子组件添加事件及事件处理方法

<template>

<div>

父组件显示:{{msg}}    <!--4.把父组件的一个方法传递给子组件-->

<Child

:data='msg'

@changeMsg='change'

></Child>

</div>

</template>

<script>

//1.导入

import Child from '@/components/Child'

 export default {

//2.注册

components: {

Child,

},

data() {

return {

msg: '父组件的信息'

}

},

methods: {

//3.在父组件中定义一个change方法,可以在子组件中触发并传值给父组件

change(data) {

// data接收是子组件中传递的数据

// debugger

alert('调用了父组件的方法, 接收到信息:'+data)

this.msg = data  // 更新父组件的内容

}

}

}

</script>

3.3测试

点击"调用父组件方法"就会调用

最新文章

  1. ubuntu16041,安装opencv3.1.0
  2. three.js 根据png生成heightmap
  3. 从css3书写顺序引出来的border-radius参数
  4. (笔记)VC6插件安装--Unable to register this add-in because its DllRegisterServer returns an error
  5. jiffies溢出与时间先后比较-time_after,time_before【转】
  6. SAP 用事务码SQVI 做简单报表 .
  7. 常见的百度蜘蛛IP
  8. Java 字符流实现文件读写操作(FileReader-FileWriter)
  9. JS 输出与变量
  10. VS2010中使用QtOpenGL出现 unresolved external symbol __imp__glClear@4 referenced in function之类的错误
  11. ACPI引起linux系统无故重启
  12. python数据类型——列表和元组类型
  13. 第一次使用github、git工具,本地仓库、远程仓库使用
  14. eclipse格式化代码快捷键失效
  15. PHP在Linux下的套件LNMP
  16. win7 64bits下编译libjpeg库
  17. django执行过程
  18. C++_类入门3-嵌套类
  19. 【转】Python爬虫(4)_selenium模块
  20. go get超时解决办法

热门文章

  1. C++ storage allocation + Dynamic memory allocation + setting limits + initializer list (1)
  2. python开发基础(一)-if条件判断,while循环,break,continue,
  3. js常用的遍历方法以及flter,map方法
  4. 全文思维导图------redis设计与实现
  5. 常用linux源列表
  6. (7)ASP.NET Core3.1 Ocelot Swagger
  7. vue实现增删改查(内附源代码)
  8. [原题复现+审计][BJDCTF2020]Mark loves cat($$导致的变量覆盖问题)
  9. webug第二关:从图片中你能找到什么?
  10. 转换文件格式遭遇 FileNotFoundError:[WinError 2]系统找不到指定的文件