志不强者智不达,言不信者行不果。这篇文章主要讲述uni-app组件之间的通讯--父子/兄弟组件之间传递数据相关的知识,希望能为你提供帮助。
$emit
、$on
、$off
常用于跨页面、跨组件通讯
uni.$emit(eventName,OBJECT)
触发全局的自定事件。
uni.$on(eventName,callback)
监听全局的自定义事件。事件可以由 uni.$emit 触发,回调函数会接收所有传入事件触发函数的额外参数。
uni.$off([eventName, callback])
移除全局自定义事件监听器
一、父组件给子组件传递数据
子组件通过props接收外界传递到组件内部的值
// 父 index.vue通过属性绑定进行传递v-bind:简写为:
< test:title="title" > < /test> data() { return { title:‘Hello‘, } },
// 子组件 test.vue通过props接收 < template> < view> 这是父组件传递过来的数据{{title}} < /view> < /template> export default { props:[‘title‘],//接收 }
二、子组件向父组件传值
通过$emit触发事件进行传递参数
// 子组件 test.vue传值num < template> < view> 子组件点击按钮触发给父组件传值 < button @click="sendNum"> 给父组件传值< /button> < /view> < /template> < script> export default { data() { return { num:‘3‘, }; }, props:[‘title‘],//接收 methods:{ sendNum(){this.$emit(‘myEven‘,this.num) //给父组件传值 }, } < /script>
// index.vue父组件接收num < view class="content"> < test:title="title" @myEven= ‘getNum‘> < /test> {{num}} < /view> export default { data() { return { num:0,//默认0 } }, methods: { getNum(num){ console.log(num) this.num = num } }, }
三、兄弟组件之间通讯
【uni-app组件之间的通讯--父子/兄弟组件之间传递数据】a.创建组件a,b,引入index.vue, components注册
// index .vue页面展示组件内容 < script> import test from ‘../../components/test.vue‘ import testA from ‘@/components/a.vue‘ import testB from ‘@/components/b.vue‘ export default { components:{ test, "test-a":testA, "test-b":testB, }, } < /script> < template> < view class="content"> < test-a> < /test-a> < test-b> < /test-b> < /view> < /template>
b.通过uni.$on注册一个全局监听事件,通过uni.$emit触发全局监听事件
//a组件 a.vue < template> < view> < button @click="addNum"> 修改b组件数据< /button> < /view> < /template> < script> export default { methods:{ addNum(){ uni.$emit(‘changeNum‘,10) //触发全局变量自定义事件changeNum,该函数为b组件内修改b组件内容的方法
}
}
}
< /script>
//b组件 b.vuea组件更改该组件内容 < template> < view> 数据{{num}} < /view> < /template> < script> export default { data() { return { num:0, }; }, created(){ //创建全局监听自定义事件改变内容 uni.$on(‘changeNum‘,num=> { this.num+=num }) }, } < /script>
推荐阅读
- Android Studio Gradle 3.6.0之后apk变大了很多,约等于2倍的原因
- Android(自定义BaseActivity基类)
- Servlet实现登录表单示例
- 在Eclipse中创建Servlet示例详细图解
- Servlet获取给定rollno结果的示例
- 在NetBeans IDE中创建servlet示例图解
- Servlet从服务器下载文件的示例
- Servlet中的事件和监听器
- Servlet中的CRUD操作示例图解