2016-10-24 1 views
0

私のページにはng-repeatがあり、その中にある項目をフィルタリングする必要があります。フィルタリングの目的のために、私は使用する必要のあるキーが含まれている上の隠しフィールドを含んでいます。ng-repeatステートメントを含むDOMオブジェクト(this)をng-if関数に渡すにはどうすればよいですか? (Javascript/AngularJS)

<div class="filterProductsContainer"> 
    <asp:HiddenField runat="server" ID="FilterKey"/> 
    <ul class="product_listing_component--results-list"> 
     <li ng-if="isInCategory(product, $event)" ng-repeat="product in filterProducts"> 
      <a href="{{product.link}}"> 
       <img src="{{product.image}}" /></a> 
     </li> 
    </ul> 
</div> 

$scope.isInCategory = function (product, $event) { 
    console.log(product); 
    console.log($event); 
    var filterKey = $($event.target).parent(".filterProductsContainer").find("input[type='hidden'").val(); 
    console.log(filterKey); 
    var targetProduct = $scope.products[product]; 
    var foundMatch = false; 
    for (var tag in targetProduct.tags) { 
     var targetTag = targetProduct.tags[tag]; 
     if (filterKey === targetTag.id) { 
      foundMatch = true; 
     } 

     if (foundMatch) { 
      break; 
     } 

    } 
    return foundMatch; 
} 

$イベントは、しかし、ヌルなってしまいます。

答えて

0

はNGリピートに直接

idはあなたがすることによってフィルタに使用したいあなた productオブジェクトのプロパティ名です
<li ng-repeat="product in filterProducts | filter: {id: '<FilterKeyValue>'}" > 

をフィルタを使用してみてください。

+0

FilterKeyValueはどのように解釈されますか?それはどこから来たのですか? –

+0

これはフィルタリングする実際の値です。あなたの場合は、それがFilterKeyの隠しフィールドの値だと思います。 「filterProducts」には「[{someProperty: '1'、名前: 'obj1'}、{someProperty: '2'、名前: 'obj2'} 'という名前が含まれていて、これを行います: '

  • {{product.name}}
  • ' ng-repeatは自動的に 'someProperty'プロパティに' 2'を持つ製品オブジェクトのみを表示します。したがって、この場合、 '' obj2''を含むLI要素だけを見るべきです。 – mojarras

    関連する問題