您好,登錄后才能下訂單哦!
父組件向子組件傳值
組件實例定義方式,注意:一定要使用props屬性來定義父組件傳遞過來的數據
<script>
// 創建 Vue 實例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
msg: '這是父組件中的消息'
},
components: {
son: {
template: '<h2>這是子組件 --- {{finfo}}</h2>',
props: ['finfo']
}
}
});
</script>
使用v-bind或簡化指令,將數據傳遞到子組件中:
<div id="app">
<son :finfo="msg"></son>
</div>
子組件向父組件傳值
原理:父組件將方法的引用,傳遞到子組件內部,子組件在內部調用父組件傳遞過來的方法,同時把要發送給父組件的數據,在調用方法的時候當作參數傳遞進去;
父組件將方法的引用傳遞給子組件,其中,getMsg是父組件中methods中定義的方法名稱,func是子組件調用傳遞過來方法時候的方法名稱
<son @func="getMsg"></son>
子組件內部通過this.$emit('方法名', 要傳遞的數據)方式,來調用父組件中的方法,同時把數據傳遞給父組件使用
<div id="app">
<!-- 引用父組件 -->
<son @func="getMsg"></son>
<!-- 組件模板定義 -->
<script type="x-template" id="son">
<div>
<input type="button" value="向父組件傳值" @click="sendMsg" />
</div>
</script>
</div>
<script>
// 子組件的定義方式
Vue.component('son', {
template: '#son', // 組件模板Id
methods: {
sendMsg() { // 按鈕的點擊事件
this.$emit('func', 'OK'); // 調用父組件傳遞過來的方法,同時把數據傳遞出去
}
}
});
// 創建 Vue 實例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {
getMsg(val){ // 子組件中,通過 this.$emit() 實際調用的方法,在此進行定義
alert(val);
}
}
});
</script>
組件中data和props的區別評論列表案例
目標:主要練習父子組件之間傳值
使用 this.$refs 來獲取元素和組件
<div id="app">
<div>
<input type="button" value="獲取元素內容" @click="getElement" />
<!-- 使用 ref 獲取元素 -->
<h2 ref="myh2">這是一個大大的H1</h2>
<hr>
<!-- 使用 ref 獲取子組件 -->
<my-com ref="mycom"></my-com>
</div>
</div>
<script>
Vue.component('my-com', {
template: '<h6>這是一個子組件</h6>',
data() {
return {
name: '子組件'
}
}
});
// 創建 Vue 實例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {
getElement() {
// 通過 this.$refs 來獲取元素
console.log(this.$refs.myh2.innerText);
// 通過 this.$refs 來獲取組件
console.log(this.$refs.mycom.name);
}
}
});
</script>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。