为什么报错说我B没定义

为什么报错说我B没定义

<!DOCTYPE html>

<html lang="en">


<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>组件间传值</title>

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>


<body>

    <div id="app">

        <!-- 在此补充代码 -->

        <input type="text" v-model='text1'  />

        <button @click='submit'>提交</button>

        <ul>

            <to-do v-bind:a='a' v-bind:b='b' @add1='addf'

                v-for='(a,b) in list' >


            </to-do>

        </ul>

    </div>

    <script>

    // 在此补充代码

    var toDo={

        props:['a','b'],

        template: "<li @click='bclick'>{{a}}</li>",

        methods:{

            bclick:function(){

                this.$emit('add1',this.b)

            }

        }

    }

    var app = new Vue({

        el: "#app",

        // 在此补充代码

        components:{

            toDo:toDo

        },

        data:{

            text1:'',

            list:[]

        },

        methods:{

            submit:function(){

                this.list.push(this.text1);

                this.text=''

            },

            addf:function(){

                this.list.splice(b,text1.value+1)

            }

        }

    })

    </script>

</body>


</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
好帮手慕夭夭 2020-12-30 10:32:04

同学你好,问题解答如下:

1、因为list保存的值是输入框输入的内容,输入框获取的内容是字符串,字符串在进行加运行的时候,默认为字符串拼接。例如“1”+1结果为11,所以需要把字符串转换为整数。

2、同学说的是如下index可以任意起名吗?

http://img1.sycdn.imooc.com//climg/5febe62d098f799304720108.jpg

这里的index是形参,形参相当于一个变量,它本身就是可以任意定义的。不管你定义成什么,它始终接收实参b的值。这是第一阶段函数入门的基础知识哦,如果同学忘记了,建议多去复习,以便巩固所学知识。

如果说的不是这个,请详细描述一下,以便老师为你解答。

祝学习愉快~

好帮手慕夭夭 2020-12-29 13:39:39

同学你好,即如下input元素的value属性值:

http://img1.sycdn.imooc.com//climg/5feac112091e552d05470154.jpg

​祝学习愉快~

好帮手慕夭夭 2020-12-29 10:30:51

同学你好,代码的问题如下:

1、 获取数据b和text1时,没有加this。vue组件中,this指向实例,要通过this才能获取实例上的数据。

2、text1.value语法不对,text1本身是一个数据,它没有value属性。如果想要获取input元素的value值,才可以使用value属性。

3、splice使用有问题。因为当前组件中并没有定义b,所以使用this.b获取的是undefined。splice替换值时,第一个参数为undefined,且第二个参数应该为要替换的项目数量,但是传入的是要替换的内容。

既然调用自定义事件时,把b作为参数传入,那么addf方法中就要定义形参接收b,再使用哦。

http://img1.sycdn.imooc.com//climg/5fea92700982490a03400068.jpg

第三个参数应该是要替换的内容,点击哪一个,应该根据索引获取list中对应的值。text1是双向数据绑定中,输入框输入什么,它的值就是什么,所以不能使用它。获取的值是字符串类型的,需要进行整数转换。

综上,代码如下修改:

http://img1.sycdn.imooc.com//climg/5fea94d709727dcf08140344.jpg

祝学习愉快!

  • 提问者 Ting111 #1
    你写的第二点如果要获取value才可以用是什么意思?
    2020-12-29 10:43:15
  • 提问者 Ting111 #2

    我没有写

    var num=Number(this.list[b])number的时候点击每一项只是在数字末尾多了一个1,比如1,11,111,1111这样,加了Number才可以变成1,2,3这样,是为什么


    2020-12-29 19:28:32
  • 提问者 Ting111 #3

    还有就是,

    addf:function(index){

                    var num=Number(this.list[index]);

                    this.list.splice(index,1,num+1)

                }

    这个里面传进去任何单词好像都不影响他运行,我上面明明定义的是b,但是我写其他的没有在上面循环里遍历的单词在这个括号里也可以正常运行,

    2020-12-29 19:31:30
好帮手慕夭夭 2020-12-29 09:44:30

同学你好,老师这边测试同学的代码,没有报错,可以正常添加,如下:

http://img1.sycdn.imooc.com//climg/5fea899e0971395519200300.jpg

控制台有一个警告,是说for循环需要设置key,以给元素设置一个唯一的标识。如下添加:

http://img1.sycdn.imooc.com//climg/5fea89ea0953a96005370093.jpg

建议同学修改之后,再重新测试一下哦。祝学习愉快~

  • 提问者 Ting111 #1
    是点击添加的项会报这个错
    2020-12-29 09:47:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师