报错:
searchCourse:(data)=>{
if (data.length !== 0) {
for (let i = 0;i < data.length;i++) {
let titleState = data[i].videoTitle.includes(this.searchKey);
let conState = data[i].videoInfo.includes(this.searchKey);
if (titleState){
if (this.videoSearchResultArr.length !== 0) {
for (let v = 0;v < vm.videoSearchResultArr.length;v++) {
if (data[i].videoTitle !== vm.videoSearchResultArr[v].videoTitle && data[i].videoInfo !== vm.videoSearchResultArr[v].videoInfo) {
vm.videoSearchResultArr.push(data[i]);
}
}
}else {
vm.videoSearchResultArr.push(data[i]);
}
}
if (conState) {
if (this.videoSearchResultArr.length !== 0) {
for (let v = 0;v < vm.videoSearchResultArr.length;v++) {
if (data[i].videoTitle !== vm.videoSearchResultArr[v].videoTitle && data[i].videoInfo !== vm.videoSearchResultArr[v].videoInfo) {
vm.videoSearchResultArr.push(data[i]);
}
}
}else {
vm.videoSearchResultArr.push(data[i]);
}
}
}
}
}
不知道为什么一直用不了这个关键字,原生js是没问题的,但一搭载vue框架就当机了
打印data数据然后控制台展开数据截张图看下,看includes是字符串的方法,属性拼写出错会导致获取不到数据为undefined会出错
searchCourse:(data)=>{
console.log(data)
你data[i]对象没有videoTitle或videoInfo属性吧
返回的是 undefined
你输出下data[i]看看是什么对象
console.log(data[i]);
那你 打印data[i] 看看 是不是 字符串和 数组 ,或者 必须有值才行 。要不然就会报错。
可以做个非空判断 。
其它用到的也判断一下
let titleState = data[i].videoTitle.includes(this.searchKey);
if(data[i].videoTitle){
titleState = data[i].videoTitle.includes(this.searchKey);
}