實時監測input中值的變化
阿新 • • 發佈:2020-10-29
1.元件定義
1.定義元件並引用 2.父元件向子元件傳值 3.子元件向父元件傳值
1.1 什麼是元件
Css中有元件,是一段可以被複用的樣式
Js中有元件,是一段可以被複用的功能
Vue中也有元件,指的就是一個模組,是一個獨立的,完整的(包含html,css,js等),可以直接拿來用的
1.2 元件特性
元件的例項化物件,跟vue例項化物件一樣,因此,我們也可以將vue例項化物件看成元件
元件間是獨立的,因此資料要獨立儲存,方法要獨立定義,彼此間不能共享。
import Father from '@/views/demo/Father' Vue.use(Router) export default new Router({ routes: [ { path: '/component', name: 'Father', component: Father }, ] })
子元件中可以通過 定義 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 '@/views/Child' export default { //2.註冊 components: { Child, }, data() { return { msg: '父元件的資訊' } }, methods: { //3.在父元件中定義一個change方法,可以在子元件中觸發並傳值給父元件 change(data) { // data接收是子元件中傳遞的資料 // debugger alert('呼叫了父元件的方法, 接收到資訊:'+data) this.msg = data // 更新父元件的內容 } } } </script>
3.3 測試
點選 "呼叫父元件方法" 就會呼叫
http://localhost:8081/#/component