Typeahead报错TypeError: b.toLowerCase() is not a function求助
解决Typeahead报错TypeError: b.toLowerCase() is not a function
这个错误我之前也碰到过,原因很明确——Typeahead 默认期望你的 source 是字符串数组,但你传入的数据01是对象数组,当它尝试对对象调用toLowerCase()方法时自然就报错了,毕竟对象没有这个方法。而数据02能正常运行,应该是因为它本身就是字符串数组,符合Typeahead的默认处理逻辑。
下面给你两种可行的解决办法:
方法1:配置Typeahead识别对象中的显示字段
如果需要保留对象数据(比如后续要用到对象里的其他属性),可以通过display选项告诉Typeahead用对象的哪个字段作为显示文本:
$.get(serviceCompanyAll, function(data) { $('.typeahead-2').typeahead({ source: data, // 方式一:用函数返回显示文本(适合需要处理字段的场景) display: function(item) { return item.compName; // 替换成你数据里实际要显示的字段名,比如公司名称字段 } // 方式二:直接指定字段名(更简洁,字段固定时用) // display: 'compName' }); }, 'json');
方法2:将对象数组转换为字符串数组
如果只需要显示文本,不需要保留对象的其他属性,可以提前把对象数组转换成字符串数组:
$.get(serviceCompanyAll, function(data) { // 提取每个对象里的显示字段,生成纯字符串数组 var sourceData = data.map(function(item) { return item.compName; // 替换成实际要显示的字段名 }); $('.typeahead-2').typeahead({ source: sourceData }); }, 'json');
你只需要根据自己的业务需求选择其中一种方式,把代码里的compName替换成你数据01中实际要显示的字段(比如你示例里的"comp..."对应的完整字段名),就能解决这个报错啦。
内容的提问来源于stack exchange,提问作者Sikandar Sahab
相关产品推荐
相关产品推荐

