2017-10-27 15 views
1

2つのプロパティに基づいて行をフィルタリングする関数を作成しようとしています。コードを実行すると、リストが表示されず、 "TypeError:未定義のプロパティ 'name'を読み取れません"というエラーが表示されます。列の名前と場所を検索しようとしています。ここに私のコントローラで

<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> 

は私のhtmlコードですが、私が持っている機能の検索

$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

ナビゲーションのナビゲーションに間違いがあります。 – yBrodsky

+0

私は知っています。既存のコードにはスペルのナビゲーションがあります。それは問題 – chan

+0

ではない問題はおそらく 'item.router'です。名前を読み取ることができません.routerは定義されていませんか? – yBrodsky

答えて

0

エラーメッセージ "TypeError:プロパティ 'name'が未定義の場合、定義されていないドット演算子を持つ変数が存在することを意味します。投稿したコードに基づいて、ルータが定義されていないように見えます。

router.name 

if文のクイックチェックによって問題が解決される可能性があります。 item.routerが定義されている場合は

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

それはあなたが「名前」プロパティにドット演算子を持ついくつかの未定義のオブジェクトを持っているあなたのコード内のどこかにある可能性があります。

私は通常、このエラーが発生したときにオブジェクトが実際に定義されていることを確認するためにデバッガを使用します。

関連する問題