微信小程序之组件

微信小程序之组件,第1张

一.创建并使用组件的步骤

1.创建一个文件夹存放组件,并在里面创建一个组件文件夹,components,tabs

2.在tabs文件里添加组件模板

3.引用组件,在父组件的json文件中的usingComponents中添加子组件路径,compont

4.使用组件,相当于正常标签进行使用

二.父组件向子组件传参的步骤

父组件给子组件的tabs传入对象

1.父组件的数据

2.子组件做的 *** 作

如果没有传入数据,就会输出默认值value

3.子组件展示对象数据:

三.子组件向父组件传参的步骤

1.先给子组件添加一个点击事件

2.通过this.triggerEvent("自定义事件名称",{传的值})命令保证子组件和父组件同步被修改

3.父组件绑定子组件,定义一个事件名称,用来接收子组件传递的数据

关于vue2.0的事件发射和接收,大家都知道$dispatch和$broadcast在vue2.0已经被弃用了,取而代之的是更加方便快捷的方式,使用事件中心,组件通过它来互相通信,不管组件在哪一个层都可以通过实例化一个空Vue来实现。上案例:

这是自己写的一个小案例,功能就是点击子组件的加减按钮控制父组件的数量变化。原理就是子组件的加减按钮点击时分发事件,父组件接收事件。相信html和css的代码大家都没问题,这里不赘述,直接说js部分,首先在项目初始化时先给data添加名为eventHub的空Vue对象,作用是让任何组件都可以调用事件发射和接收的方法。代码如下:

在点击加号按钮时向父组件派发事件:

由于我写的json数据是两层的:

所以两层循环把数据展示在页面上,要精确将某个食物的数量显示必须知道第一大类和这一大类下这个食物的索引值,在这里在html那里先把两个索引传进子组件,在分发事件时再和数量一起打包成对象发射给父组件。

记得子组件要在props里对child,parent进行声明,接着是父组件对发射过来的countFunc进行接收:

到了这个时候将子组件传过来的countFunc里的obj进行console.log(),你会发现父组件已经接收了一个对象:Object {count: 1, index: 0, parent: 0},也就是当我点击一下苹果的加号按钮时传过来count为1说明数量为1,parent索引为0说明是第一大类,index为0说明是第一大类下的苹果,至此已经实现了父子组件之间的事件发射和接收。

完整代码如下:

1.父组件:

2.子组件:

在 vue-cli 脚手架下,在父组件引入子组件时,给元素标签绑定了一个 click 事件,但是实际页面中点击子组件却并没有触发事件指向的方法。

此时点击子组件,却并没有在控制台中输出'触发了父组件方法'。

解决方法:

将 @click="funcName" 写为 @click.native="funcName" ,子组件不变


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11782229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存