为什么报错说我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
同学你好,代码的问题如下:
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,再使用哦。
第三个参数应该是要替换的内容,点击哪一个,应该根据索引获取list中对应的值。text1是双向数据绑定中,输入框输入什么,它的值就是什么,所以不能使用它。获取的值是字符串类型的,需要进行整数转换。
综上,代码如下修改:
祝学习愉快!
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星