欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > vue >内容正文

vue

Vue组件传值、Vue、组件

发布时间:2024/3/13 vue 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Vue组件传值、Vue、组件 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

子组件传父组件:

<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./js/vue.js"></script> </head><body><div id="app"><!-- 子组件绑定自定义事件(send),触发父组件中接收数据的函数(get()),get()里面参数是固定的$event --><child @send="get($event)"></child></div><script>Vue.component("child", {data() {return {ctext: '你的名字',name: 'zs'}},// 通过某个事件触发$emit(),$emit()第一个参数是一个自定义事件,第二个参数是哟啊发送的数据,可以是单个也可以是[]也可以是{}template: `<div><button @click="$emit('send',name)">发送</button></div>`})const vm = new Vue({el: "#app",data: {pmsg: '父组件的内容',text: null},methods: {// 父组件获取数据的函数get(data) {this.text = dataconsole.log(this.text);}}})</script> </body></html>

父组件传子组件:

<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./js/vue.js"></script> </head><body><div id="app"><!-- 属性优先于属性绑定 --><!-- 这里显示的是父组件传过来的属性 --><!-- <hello :pmsg="msg" pmsg="父组件传过来的属性"></hello> --><hello :pmsg="msg" cmsg="父组件传过来的属性" :test="text"></hello></div><script>Vue.component("uname", {props: ["test"],template: `<div>{{test}}</div>`})Vue.component("hello", {// 通过props属性接收父组件传来的值props: ["cmsg", "pmsg", "test"],// :test="test"里面的值"test"是从hello组件里面拿的而不是父组件拿的template: `<div>{{pmsg}}---{{cmsg}}<uname :test="test"></uname></div>`})const vn = new Vue({el: "#app",data: {msg: "我是父组件的msg",text: "你的名字"},methods: {},})</script> </body></html>

同级组件事件互传:

<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./js/vue.js"></script> </head><body><div id="app"><to></to><get></get></div><script>// 定义一个事件中心hubconst hub = new Vue()Vue.component("to", {data() {return {toText: '你的名字',getText: ''}},// 发送的事件textmethods: {to() {// 发送方,text是传送的事件hub.$emit('text', this.toText)}},// 接收的事件为testmounted() {// $on是监听hub.$on('test', (data) => {this.getText = dataconsole.log(data);})},// 通过某个事件触发发送数据的函数template: `<div><button @click="to">发送数据</button><br/>传过来的数据是:{{getText}}</div>`,})Vue.component("get", {data() {return {toText: '你叫什么名字',getText: ''}},// 发送的事件testmethods: {// 发送方是hub.$emit()to() {// 发送方,text是传送的事件hub.$emit('test', this.toText)}},// 接收的事件textmounted() {// 接收方是hub.$on()hub.$on("text", (data) => {this.getText = data})},template: `<div><button @click="to">发送数据</button><br/>传过来的数据是:{{getText}}</div>`})const vm = new Vue({el: "#app",})</script> </body></html>

综合:

<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./js/vue.js"></script> </head><body><div id="app"><!-- 在没有插槽的时候可以用单标签 --><!-- p-to-c:属性绑定 --><!-- <hello :msg="msg"></hello> --><!-- c-to-p:自定义事件触发父组件中接收数据的函数,父组件接收函数的参数$event是固定不变的 --><!-- c-to-p --><!-- <hello @fn="gettext($event)"></hello> --><tom></tom><jack></jack></div><script>// p-to-c/* Vue.component("hello", {props: ["msg"],template: `<div>{{msg}}</div>`,}) */// c-to-p/* Vue.component("hello", {data() {return {text: "我是子组件的文本信息"}},// 子组件通过某个事件触发$emit()事件,$emit(x,y)里面的第一个参数x为子组件的自定义事件,y为要传给父组件的数据template: `<div><button @click="$emit('fn',text)">发送数据</button></div>`,}) */const hub = new Vue()Vue.component("tom", {data() {return {msg: "早上好"}},methods: {toHi() {hub.$emit("sayHi", this.msg)}},template: `<div><button @click="toHi">发送数据</button></div>`})Vue.component("jack", {data() {return {msg: ""}},mounted() {hub.$on("sayHi", (data) => {this.msg = data})},template: `<div>{{msg}}</div>`})const vm = new Vue({el: "#app ",data: {msg: "我是父组件的文本信息 ",text: ''},// c-to-p/* methods: {// ,接收子组件传送数据过来的函数,函数里的data就是$eventgettext(data) {this.text = dataconsole.log(this.text);}} */})</script> </body></html>

总结

以上是生活随笔为你收集整理的Vue组件传值、Vue、组件的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。