2016-09-11 149 views
1

我有从JSON数据源,它看起来像这样显示的电影的列表的应用程序:麻烦过滤表数据

{ 
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" 
} 

该控制器设置是这样的:

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; 
    }); 
}); 

和标记为表和文字输入在电影中过滤两个电影的名字和演员:

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

不知道如何连接过滤器功能,以便我可以键入名称,并按名称输入过滤或输入演员姓名,并在名称中显示具有该演员的所有电影。

我目前可以看到电影的名字和演员,不过,演员与他们的阵列括号显示其需要显示没有他们:

enter image description here

回答

1

你可以做到这一点, 有一个NG-型号为演员输入框,

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

遍历电影中的子阵列,并添加过滤器'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

此当两个对象是相同的数据的工作,但没有显示当我在完全数据有效载荷装载:https://plnkr.co/edit/JEvBFtMFbPK0jcgzhiZb?p=preview – user3438917

+0

有是你的JSON的问题,它应该包含关键和值。你的钥匙没有“”https://plnkr.co/edit/6gb3OJZ5M6F8i6dr2HFf?p=preview – Sajeetharan

+0

下面是带格式化json的plunk:https://plnkr.co/edit/fvwQfZVYM0PIWZzPGoOp?p = preview。你在哪里看到缺失的值?当用户在名称字段中输入电影时,电影名称应该过滤,并且当他们输入演员姓名时,电影应该只过滤到其中具有该演员的电影。 – user3438917