日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

angular移除事件绑定事件绑定_Vue.js子组件利用事件向父组件传输数据,以及sync修饰符和双向绑定...

發布時間:2023/12/1 vue 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 angular移除事件绑定事件绑定_Vue.js子组件利用事件向父组件传输数据,以及sync修饰符和双向绑定... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Vue.js的組件中,prop是“單向綁定”的,數據只能從父組件傳輸到子組件。Vue文檔中的說了這樣做的原因:

所有的 prop 都使得其父子 prop 之間形成了一個單向下行綁定:父級 prop 的更新會向下流動到子組件中,但是反過來則不行。這樣會防止從子組件意外變更父級組件的狀態,從而導致你的應用的數據流向難以理解。

用自定義事件向父組件發送數據

但是有時候的確需要由子組件從父組件獲取更新的數據,這時候一個相對簡單的方法就是——自定義事件。父組件監聽事件,在事件的回調函數中得到數據。子組件emit事件,同時發送數據。

父組件

<template><div id="app"><HelloWorld @click="clickData" /><div> {{abc}} </div></div> </template><script> import HelloWorld from "./components/HelloWorld.vue"; export default {name: "App",components: {HelloWorld,},data() {return {abc: 123}},methods: {clickData (value) {this.abc = value}}, }; </script>

子組件

<template><div class="hello"><button @click="clickadd">按下</button></div> </template><script> export default {name: 'HelloWorld',methods: {clickadd () {this.$emit('click', '456')}} } </script>

按下按鈕前:

按下按鈕后:

123和456表示的是父組件中變量abc的值,子組件按下按鈕時,調用了this.$emit,第一個參數表示時間名,第二個參數就可以傳遞想要發送到父組件的數據了。

父組件這邊則在子組件的html標簽上監聽同名的事件(@click="clickData"),編寫回調函數接收值并賦值給變量abc。

用自定義事件實現子組件prop雙向綁定

更進一步,如果我們想改變傳輸到子組件的prop所綁定的父組件的變量,我們可以這樣寫:

父組件

<template><div id="app"><HelloWorld :msg="abc" @update:msg="clickprop"/><div> {{ abc }} </div></div> </template><script> import HelloWorld from "./components/HelloWorld.vue"; export default {name: "App",components: {HelloWorld,},data() {return {abc: "123",};},methods: {clickprop(value) {this.abc = value}}, }; </script>

子組件

<template><div class="hello"><div id="demo" @click="clickadd">{{ msg }}</div></div> </template><script> export default {name: 'HelloWorld',inhertAttrs: true,props: {msg: {type: String,}},data: function() {return {}},methods: {clickadd () {this.$emit('update:msg', '456')}} } </script>

這樣子組件和父組件的值會同時變化。按下上面的123之前:

按下上面的123之后:

值456首先通過emit傳遞到了父組件,再被賦值給了父組件變量abc,再通過子組件綁定的prop傳遞回父組件,最終同時變化成功。這樣也算實現了“雙向綁定”。

使用.sync修飾符簡化雙向綁定代碼

代碼中的事件名“update:msg”僅僅是一個名字而已,不和prop名相同也可以。但是如果我們保持與prop名相同,Vue為上面的代碼提供了一個簡寫的形式:使用.sync操作符。使用它,事件名固定為了“update:prop名”的形式,我們也不需要自己寫回調函數和綁定事件的代碼了。

父組件

<template><div id="app"><HelloWorld :msg.sync="abc" /><div> {{ abc }} </div></div> </template><script> import HelloWorld from "./components/HelloWorld.vue"; export default {name: "App",components: {HelloWorld,},data() {return {abc: "123",};},methods: {}, }; </script>

子組件

<template><div class="hello"><div id="demo" @click="clickadd">{{ msg }}</div></div> </template><script> export default {name: 'HelloWorld',inhertAttrs: true,props: {msg: {type: String,}},data: function() {return {}},methods: {clickadd () {this.$emit('update:msg', '456')}} } </script>

這段代碼與上一部分實現相同的效果。

可以看到,.sync修飾符僅僅起到一個簡化作用而已。

總結

以上是生活随笔為你收集整理的angular移除事件绑定事件绑定_Vue.js子组件利用事件向父组件传输数据,以及sync修饰符和双向绑定...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。