0

I currently have a working repeater that places the fields for each page on the appropriate page.

<div ng-repeat="p in model.pages">
    <div ng-repeat="f in model.fields | filter: { pageNumber: p.pageNumber }:true">
        <div class="pdf-field">{{f.value}}</div>
    </div>
</div>

However, I need it to filter out any fields that either don't have the isTask property or if the property equals false. The code below kills the entire repeater and includes nothing.

<div ng-repeat="p in model.pages">
    <div ng-repeat="f in model.fields | filter: { pageNumber: p.pageNumber }:true | filter: { isTask: true }">
        <div class="pdf-field">{{f.value}}</div>
    </div>
</div>
1
  • create a custom filter Commented Jun 15, 2017 at 20:14

2 Answers 2

3

You could combined both of them into single filter object.

ng-repeat="f in model.fields | filter: { pageNumber: p.pageNumber, isTask: true }"

Rather the better approach would be doing this filtering in controller side once. So that the application will be more performant.

model.pages.filter(function(page){
   page.fields = model.fields.filter(function(field){
      return field.pageNumber === page.pageNumber && field.isTask;
   });
   return page.fields.length;
});

<div ng-repeat="p in model.pages">
    <div ng-repeat="f in p.fields">
        <div class="pdf-field">{{f.value}}</div>
    </div>
</div>
Sign up to request clarification or add additional context in comments.

Comments

1

How about using ngIf

<div ng-repeat="p in model.pages">
    <div ng-repeat="f in model.fields | filter: { pageNumber: p.pageNumber }:true" ng-if="isTask=true">
        <div class="pdf-field">{{f.value}}</div>
    </div>
</div>

1 Comment

this worked also but I had to change to ng-if="f.isTask == true"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.