【问题标题】:TypeError: Cannot read property 'indexOf' of undefined for $scope.search angular bootstrapTypeError:无法读取 $scope.search 角度引导程序未定义的属性“indexOf”
【发布时间】:2017-10-28 09:28:36
【问题描述】:

我正在尝试编写一个基于几个属性过滤行的函数。当我运行代码时,列表没有显示出来,并且有一个错误提示“TypeError: Cannot read property 'name' of undefined”。我正在尝试搜索列名称和位置。这是我的html代码

<tbody ng-if="routerList.length">
<tr ng-repeat="router in routerList | orderBy: rule|filter : search | limitTo:5:5*(naviagtion.currentPage-1) ">
    <td><span>{{router.routerId}}</span></td>
    <td><span>{{router.name}}</span></td>
    <td><span>{{router.macAddr}}</span></td>
    <td><span>{{router.primaryIP}}</span></td>
    <td><span>{{router.status}}</span></td>
    <td><span>{{router.location}}</span></td> 

</tr>
</tbody>

在我的控制器中,我有一个函数搜索

$scope.search = function(item){
    if($rootScope.naviagtion.searchText == undefined){
        return true;
    }else{
        if(item.router.name.indexOf($rootScope.naviagtion.searchText) != -1 || item.router.location.indexOf($rootScope.naviagtion.searchText) != -1 ){
            return true;
        }
    }
    return false;
}

谁能告诉我怎么了?

【问题讨论】:

  • 你拼错了导航naviagtion
  • 我知道。现有代码具有拼写导航。这不是问题
  • 那么问题可能出在item.router。无法读取名称,因为 .router 未定义?
  • 它说无法读取未定义名称的属性
  • 你能console.log(item)吗?

标签: javascript angularjs html angular-ui-bootstrap


【解决方案1】:

错误消息“TypeError: Cannot read property 'name' of undefined”表示存在一个未定义的带有点运算符的变量。根据您发布的代码,似乎没有定义路由器。

router.name

快速检查您的 if 语句可以解决问题。

if(item && item.router && ...) { }

如果 item.router 被定义,那么它可能在你的代码中的其他地方,你有一些未定义的对象,带有一个点运算符到一个 'name' 属性。

someUndefinedObject.name

当我看到这个错误时,我通常使用调试器来确保我的对象实际上是定义的。

【讨论】:

    猜你喜欢
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多