2016-09-11 3 views
1

Ich habe eine Anwendung, die eine Liste von Filmen aus einer JSON Datenquelle zeigt, die wie folgt aussieht:Störungsfiltertabellendaten mit Winkelfilter

{ 
Rank: 1, 
Duration: "155 min", 
Description: "When a Roman general is betrayed and his family murdered by an emperor's corrupt son, he comes to Rome as a gladiator to seek revenge.", 
Director: "Ridley Scott", 
Genres: [ 
"Action", 
"Drama" 
], 
Actors: [ 
"Russell Crowe", 
"Joaquin Phoenix", 
"Connie Nielsen", 
"Oliver Reed", 
"Richard Harris", 
"Derek Jacobi", 
"Djimon Hounsou", 
"David Schofield", 
"John Shrapnel", 
"Tomas Arana", 
"Ralf Moeller", 
"Spencer Treat Clark", 
"David Hemmings", 
"Tommy Flanagan", 
"Sven-Ole Thorsen" 
], 
Id: 318, 
Name: "Gladiator" 
} 

Der Controller Einrichtung ist wie folgt:

var myMovies = angular.module('movieapp', []); 
myMovies.controller('movieController', function($scope, $http){ 
    $http.get("url-to-datasource") 
    .success(function(response) { 
     console.log(response); 
     $scope.results = response; 
    }); 
}); 

und Markup für die Tabelle und Texteingaben sowohl Film Namen und die Schauspieler in Filmen zu filtern:

<div class="form-inline"> 
     <div class="form-group"> 
     <label for="Name">Name</label> 
     <input type="text" class="form-control" id="name" placeholder="Title"> 
     </div> 
     <div class="form-group"> 
     <label for="Actor">Actors</label> 
     <input type="text" class="form-control" id="actors" placeholder="Actors"> 
     </div> 
    </div> 
    <table class="table-striped"> 
     <thead> 
     <td width="15%">Name</td> 
     <td width="30%">Actors</td> 
     <td width="10%"></td> 
     </thead> 
    <tr ng-repeat="movies in results | filter: name || actors"> 
      <td>{{movies.Name}}</td> 
      <td>{{movies.Actors}}</td> 
      <td>{{movie.Name}} <a class="bookMovie" href="http://www.fandango.com/{{movies.Name}}">Book Now!</a></td> 
    </tr> 
    </table> 

Ich bin mir nicht sicher, wie ich die Filterfunktionalität anschließe, damit ich einen Namen eingeben und nach Name filtern oder einen Namen eingeben kann und alle Filme mit diesem Akteur im Namen anzeigen kann.

ich zur Zeit die Filmnamen und Schauspieler sehen können, jedoch, dass die Akteure mit ihren Array Klammern zeigen, welche ohne sie angezeigt werden muss:

enter image description here

Antwort

1

Sie dies tun können, haben eine ng- Modell für die Box Akteure Eingang

<input ng-model="actor" type="text" class="form-control" id="actors" placeholder="Actors"> 

Iterate über das Sohn-Feld innerhalb des Films, und fügen den Filter 'actor'

<tr ng-repeat="movies in results "> 
       <td>{{movies.Name}}</td> 
       <td><li ng-repeat="laptop in movies.Actors | filter:actor" > 
       <span ng-bind="laptop"></span> 
       </li></td> 
       <td>{{movie.Name}} <a class="bookMovie" href="http://www.fandango.com/{{movies.Name}}">Book Now!</a></td> 
     </tr> 

WORKING DEMO APP

+0

Dies funktioniert, wenn beide Objekte die gleichen Daten, aber nichts zeigt, wenn ich in der vollen Daten Nutzlast laden: https://plnkr.co/edit/JEvBFtMFbPK0jcgzhiZb?p=preview – user3438917

+0

Es ist ein Problem mit Ihrem JSON, es sollte Schlüssel und Wert enthalten. Ihre Schlüssel haben nicht "" https://plnkr.co/edit/6gb3OJZ5M6F8i6dr2HFf?p=preview – Sajeetharan

+0

Hier ist das Plunk mit formatierten JSON: https://plnkr.co/edit/fvwQfZVYM0PIWZzPGoOp?p=preview. Wo siehst du einen fehlenden Wert? Wenn der Benutzer einen Film in das Namensfeld eingibt, sollten die Filmnamen gefiltert werden. Wenn sie den Namen eines Schauspielers eingeben, sollten die Filme nur nach Filmen mit diesem Akteur gefiltert werden. – user3438917