您好,我将Angularjs用于我的项目,有国籍搜索下拉列表。我想映射在Input上键入的内容,并在国籍JSON对象中对其进行过滤。这部分在IE以外的其他浏览器中都可以正常工作。出现控制台错误“对象不支持属性或方法'startsWith'”。这是我的代码,我能为我的代码为此问题添加“ String.prototype.startsWith”吗?
$scope.searchNationality = function (data) {
var output = [];
if (data != "" && data != undefined) {
$scope.ShowNationalityDropDown = true;
for (var i = 0; i < $scope.nationalityList.length; i++) {
if ($scope.nationalityList[i].content.toLowerCase().startsWith(data.toLowerCase())) {
output.push($scope.nationalityList[i]);
}
}
$scope.nationalityListSearchResults = output;
} else {
$scope.ShowNationalityDropDown = false;
$scope.nationalityListSearchResults = [];
}
};
答案 0 :(得分:4)
您可以尝试从.startsWith更改为.indexOf,因为它与IE较低版本兼容。如果.indexOf返回0,则该字符串位于调用该函数的字符串的第一个位置,当您无法使用.startsWith()时,可以使用该字符串。
const str = "Hey this is a sample string!"
console.log(str.indexOf("Hey") === 0)
console.log(str.indexOf("sample") === 0)
答案 1 :(得分:1)
$scope.searchNationality = function (data) {
var thereIsData = data != "" && data != undefined;
var output = thereIsData
? $scope.nationalityList.filter(function (nationality) {
return nationality.content.toLowerCase().indexOf(data.toLowerCase())) == 0;
})
: [];
$scope.ShowNationalityDropDown = thereIsData;
}