我正在尝试编写一个基于几个属性过滤行的函数。当我运行代码时,列表没有显示,并且出现错误" TypeError:无法读取属性' name'未定义"。我正在尝试搜索列名称和位置。这是我的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;
}
有人可以告诉我什么是错的吗?
答案 0 :(得分:1)
错误消息&#34; TypeError:无法读取属性&#39; name&#39;未定义&#34;意味着有一个变量,其上有一个点运算符,没有定义。根据您发布的代码,看起来没有定义路由器。
router.name
快速检查if语句可以解决问题。
if(item && item.router && ...) { }
如果定义了item.router,那么它可能在你的代码中的某个地方,你有一个未定义的对象,带有一个点运算符到一个&#39; name&#39;属性。
someUndefinedObject.name
我通常使用调试器来确保在看到此错误时我的对象实际上已定义。