这个地方的change后面跟的参数,我改成其他数字也可以获取到,但是这个数字到底是什么作用
来源:4-3 父子组件间的数据传递
Ting111
2021-01-31 16:17:14

我把这个数字改成5 后,
plus:function(){
this.num+=1;
this.$emit('change',5)
}
-------------
handleChange:function(f){
this.total+=f;
}
第一个是total里面获取到的好像是字符串,不知道是哪里写错了,第二个就是,这个total每次都只是在加5,改成1后也只是在加1并不能真的计算conte里的数字,因为这个计算器到后来计算的并不是单纯的+1,而是5+5这种差值大于1的算法
3回答
同学你好,解答如下:
1、total的值是字符串,可能与如下几个位置有关系:


建议同学把全部的代码粘贴出来,老师再为你解答。
2、total的值,与两个counter组件中的值没关系。total与counter组件的关系是,只要点击counter,就会让total的值加5。如果把数字改成2,则每次点击counter,会让total加2:

即change方法后面的参数,是子组件传给父组件的,父组件可以在相应的方法中,接收到这个参数。子组件传出来什么,父组件就能接收到什么。这个数字,只是用来模拟子组件可以给父组件传值。
父组件接收到这个参数后,可以利用这个参数进行一系列计算,“ this.total += f”这句代码,就是在模拟父组件操作子组件传过来的参数。
3、由于total会参与到加法运算中,如果将其设置成空字符串后,加运算时,会进行拼接,得到字符串。
建议同学在加运算时,将其转成数字,这样就不会当成字符串来计算了,如下:

4、total的值与counter中的数字无关,它们彼此各自计算各自的。每点击一次counter,counter自己会加2,而total自己会加5:

祝学习愉快!
Ting111
提问者
2021-01-31

然后这个total如果我想让初始值是空的话要怎么写,我写成这种样式,计算的时候就只能是字符串了
Ting111
提问者
2021-01-31
我又看了一下视频里面的计算,这个计算器其实并不是真的凭空计算num1+num2的数值而是只能在一开始的时候计算1+1+1+1+1+1+1+1这种累积的算法对吗,所以每次加上单个项里改变的步长就形成了一个计算器的假象?
相似问题