类型错误: 无法读取未定义的属性'indexOf' $scope。search 角度引导



我正在尝试编写一个基于几个属性过滤行的函数。当我运行代码时,列表没有显示,并且有一个错误指出"类型错误:无法读取未定义的属性'名称'"。我正在尝试搜索列名称和位置。这是我的 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;
}

有人可以告诉我出了什么问题吗?

错误消息"TypeError: 无法读取未定义的属性'name'"表示存在一个变量,该变量上带有未定义的点运算符。 根据您发布的代码,似乎未定义路由器。

router.name

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

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

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

someUndefinedObject.name

我通常使用调试器来确保在看到此错误时实际上定义了我的对象。

最新更新