一、组件方法之间的调用
1.父组件调用子组件
1、在父组件中:首先要引入子组件 import Child from './child';
2、 <child ref="mychild"></child>是在父组件中为子组件添加一个占位,ref="mychild"是子组件在父组件中的名字
3、父组件中 components: { 是声明子组件在父组件中的名字
4、在父组件的方法中调用子组件的方法,很重要 this.$refs.mychild.parentHandleclick("嘿嘿嘿");
2.子组件调用父组件
this.$parent.event
第二种方法是在子组件里用$emit
向父组件触发一个事件,父组件监听这个事件就行了。
3.子组件向父组件传值
this.$emit("function",param)
比如,这里子组件当中:
父组件当中
然后触发父组件当中的loadDataList
(这里loadDataList的作用就是保存数据,所以我们调用它,就可以实时更新页面)
二、请假页面、添加请假组件之间的关系梳理
1.页面
leave.vue
leave-add.vue
1.leave.vue当中数据理解
每个页面其实相当于一个表格,那么我们可以通过插槽,获取当前行的数据
这样,我们就可以拿到后端返回给我们的数据。以此,我们就可以把这些数据返回给后端
比如,我们可以打印scope.row我们就可以发现,他们里面返回给我们很多值,比如我们想拿到id,那我们就可以直接,scope.row.id.
2.depList
就是说,下拉列表显示了depList里面的数据,我们在data里面声明了depList,这个depList的值是从哪里来的呢?就是从图三这个函数来的,他发送了一个get请求,然后得到了一个resp的返回值,在这里将deptList的值赋为返回值里面我们需要的那一个部分
那么这个函数是怎么触发的呢?他是在created里面,也就是说生命周期最开加载,当这个页面渲染出来,那么他就执行了这个函数了
3.leava-add.vue
(1)使用
首先需要导入这个组件——import
然后需要注册这个组件——component
最后就可以使用了
标签名字对应我们导入的名字,这里小注意点就是,标签是不区分大小写的,所以字母一样就好
三、model和v-model
原文链接:这里!
四、组件之间的相互使用
1. 想要实现功能
点击leave.vue界面当中按钮——弹出第一个组件leave-add.vue——点击第一个组件当中的按钮——弹出第二个组件leave-add-pic.vue
2.思路:
将两个组件都在leave.vue当中导入,然后两个组件的visible都设置为false,当点击第一个按钮的时候,修改第一个组件的visible为true,当点击第一个组件的按钮时候,修改第一个组件的visible为true,修改第二个组件的visible为true。
3.代码实现
leave.vue当中组件的位置
在data当中都初始化为不可见
找到第一个点击按钮触发的事件
可以看到他把第一个组件变为可视,并且调用了第一个子组件当中的init方法
($refs后面的add是第一个子组件的的ref,如下图)
现在我们来实现第二步,找到leave-add.vue当中的按钮和他触发的事件
可以看到我们这里就实现了第二步
这里为什么我们用this.$parents.param因为leave-add.vue是子组件,但是我们想要改变的是父组件leave.vue当中的值,子组件向父组件传值,就采用此方法
9.12-9.18简单总结
1.问题解决
(1)问题:我的弹窗的必填性质和清空不起作用
解决:改了名字!!!!!!!!没有一起全部改!!!!所以没事不要乱改一些没有必要的东西
2.一周总结
这一周的收获在于,继续理解了更多的代码,理解了数据流向,补充了vue的知识。最大的感受是在前后端对接口时的收获,解决接口报错的问题思路变得清楚了,先去看接口报错是什么,后端需要的参数我传回去了吗,没有传回去,那么我就去找到这个出问题的数据,弄清楚数据的流向,明白我要从哪里拿到这个数据传回去给后端使用。vue因为不注重DOM的渲染,更多注意的时是数据的流向,所以在弄清楚数据流动的时候,整个代码的思路也变得更加清楚了。
慢慢搞清楚了数据流向,一些接口的位置,我也会自己改数据,然后自己调试看结果了!
还学会了debugger,利用debugger去断点,查看是否调用函数等。