1. 程式人生 > >Vue元件傳參

Vue元件傳參

component( ) 自定義元件時經常會用到引數,主要有兩種情況:父向子傳參、子向父傳參。

父子傳參:

在父子傳參中需要用到的是 component 中的 props 屬性,props 是一個數組,包含了父級元件傳來的引數。
下面這個例子中,定義了一個 user 元件,用來顯示一個名字的 a 標籤,當點選時跳轉到該名字的頁面。用法如下:

<!doctype html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>prop</
title
>
</head> <body> <div id="app"> <user username="Talon"></user> </div> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script> <script type="text/javascript"> Vue.component('user', { template: '<a :href="\'/user/\'+username">{{username}}</a>'
, props: ['username'], }) new Vue({ el: '#app' })
</script> </body> </html>

子父傳參:

上面實現了父子之間的傳參,現在實現以下子父之間的傳參。先自定義兩個元件 balance 和 show,用來顯示餘額。在 balance 元件的模板中呼叫 show 元件,然後將引數在 show 元件中傳到 balance 中。

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"> <title>Demo</title> </head> <body> <div id="app"> <balance></balance> </div> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script> <script type="text/javascript"> Vue.component('balance', { template: ` <div> <show @show-balance="show_balance"></show> <div v-if="show"> 您的餘額:{{money}} </div> </div> `, data: function () { return{ show: false, money: 0, } }, methods: { show_balance: function (data) { this.show = true; this.money = data; } } }); Vue.component('show', { template: '<button @click="onClick">顯示餘額</button>', methods: { onClick:function () { this.$emit('show-balance', 100); } } }); new Vue({ el: '#app' }) </script> </body> </html>