angularjs项目中的JavaScript .startWith()函数在IE中不起作用

时间:2019-01-28 04:15:34

标签: javascript angularjs

您好,我将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 = [];
        }
    };

2 个答案:

答案 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;
}