【问题标题】:AngularJS / Firebase Cannot read property 'toLowerCase' of undefinedAngularJS / Firebase 无法读取未定义的属性“toLowerCase”
【发布时间】:2014-07-03 03:04:49
【问题描述】:

我正在尝试将使用 PHP API 将数据加载到 AngularJS 应用程序的应用程序转换为使用 Firebase 作为后端的应用程序。

我想我差不多明白了,但它抛出了一个错误

TypeError: 无法读取未定义的属性“toLowerCase”

这是我使用'toLowerCase'的地方

app.filter('searchFor', function(){

    return function(arr, searchString){
        if(!searchString){
            return arr;
        }
        var result = [];
        searchString = searchString.toLowerCase();
        angular.forEach(arr, function(i){
            if(i.english.toLowerCase().indexOf(searchString) !== -1){
                result.push(i);
            }
            if(i.spain.toLowerCase().indexOf(searchString) !== -1){
                result.push(i);
            }
            if(i.germany.toLowerCase().indexOf(searchString) !== -1){
                result.push(i);
            }
            if(i.france.toLowerCase().indexOf(searchString) !== -1){
                result.push(i);
            }
            if(i.philippines.toLowerCase().indexOf(searchString) !== -1){
                result.push(i);
            }
            });
        return result;
    };

});

知道可能出了什么问题吗?

【问题讨论】:

    标签: angularjs firebase angularfire


    【解决方案1】:

    您正试图对不存在的i 属性调用toLowerCase 方法。假设i 通常包含这些值,但有时会丢失其中的一些,您可以通过更改每个来修复它

    if(i.whatever.toLowerCase()
    

    if(i.whatever && i.whatever.toLowerCase()
    

    【讨论】:

    • 在使用 PHP 后端的先前版本中,似乎项目在 firebase 中变成了 i。 angular.forEach(arr, function(item){ if(item.english.toLowerCase().indexOf(searchString) !== -1){ result.push(item); } 我对整个 angular/firebase 概念很陌生,我做错了吗?
    • 这是我的数据集在 firebase imgur.com/VgLM9ox 中的样子的链接
    • 不确定因为我没有使用过firebase,但是如果你console.log(i) 会发生什么?你看到你期望的数据了吗?如果在foreachconsole.log(arr) 之外会发生什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2020-07-23
    • 2020-06-24
    • 2018-10-23
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多