我正在尝试编写一个基于几个属性过滤行的函数。当我运行代码时,列表没有显示,并且有一个错误指出"类型错误:无法读取未定义的属性'名称'"。我正在尝试搜索列名称和位置。这是我的 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
我通常使用调试器来确保在看到此错误时实际上定义了我的对象。