2015-11-14 26 views
1

相關聯我有確實的請求的服務內容,僅顯示與用戶

.factory('movieService', ['$http', function($http) { 
    return { 
    loadMovies: function() { 
     return $http.get('/movies_users.json'); 
    } 
    }; 
}]) 

這是JSON輸出並且是被連接2代表的結果。用戶表和電影表。正如你所看到的,用戶與1部或更多的電影相關聯。

[ 
    {"id":1, 
    "email":"[email protected]", 
    "movies":[ 
     { 
     "id":4, 
     "title":"Creed", 
     movie_id":"312221" 
     }, 
     { 
     "id":5, 
     "title":"Star Wars: Episode VII - The Force Awakens", 
     "movie_id":"140607" 
     } 
    ] 
    }, 

    {"id":2, 
    "email":"[email protected]", 
    "movies":[ 
     { 
     "id":4, 
     "title":"Creed", 
     movie_id":"312221" 
     } 
    ] 
    } 
] 

然後我在我的控制器此功能,

movieService.loadMovies().then(function(response) { 
    $scope.movies = response.data; 
}); 

這從服務到影片範圍存儲數據。

如果我這樣做,

"ng-repeat" => "movie in movies" 

的NG-重複顯示所有由所有用戶添加的電影。我如何才能在視圖中顯示與當前用戶關聯的電影?

+0

您的代碼並不顯示一個電影對象,該對象在所有的電影,所以你應該用的一個合作僅包含一位用戶電影的對象。顯示更多的代碼? –

+0

我試圖澄清這個問題。 –

回答

1

這似乎是你想要的 - 讓我知道它是否有幫助。 請注意,您有一個額外的"movie_id",這肯定沒有幫助

angular.module('myApp', []) 
 
    .controller('ctrl', function($scope) { 
 
    $scope.users = [ 
 
    {"id":1, 
 
    "email":"[email protected]", 
 
    "movies":[ 
 
     { 
 
     "id":4, 
 
     "title":"Creed", 
 
     movie_id:"312221" 
 
     }, 
 
     { 
 
     "id":5, 
 
     "title":"Star Wars: Episode VII - The Force Awakens", 
 
     "movie_id":"140607" 
 
     } 
 
    ] 
 
    }, 
 

 
    {"id":2, 
 
    "email":"[email protected]", 
 
    "movies":[ 
 
     { 
 
     "id":4, 
 
     "title":"Creed", 
 
     movie_id:"312221" 
 
     } 
 
    ] 
 
    } 
 
]; 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="ctrl"> 
 

 
    <div ng-repeat="user in users"> 
 
     {{user.email}} 
 
    <div ng-repeat="movie in user.movies"> 
 
     {{movie.title}} 
 
    </div> 
 
    </div> 
 
    
 
    <h2>Movies for user 2</h2> 
 
    <div ng-repeat="movie in users[1].movies"> 
 
     {{movie.title}} 
 
    </div> 
 
    
 
</div>

+0

我的問題是,當我使用'ng-repeat'時,它顯示所有用戶的所有電影。我正在尋找一種方法來只顯示當前用戶添加的電影。 –

+0

@PeterBoomsma查看更新 –

0

在快速谷歌搜索發現: How do I filter an array with AngularJS and use a property of the filtered object as the ng-model attribute?

<div ng-repeat="movie in movies | filter {email:'[email protected]'}"> 

編輯:它看起來像你確實有一個用戶列表,這樣你就可以做對用戶的ngrepeat一個過濾器,那麼你就必須電影上的嵌套重寫(未過濾,因爲它們附着在用戶身上)。但取決於您的應用程序實際需要如何工作,您可以在數據返回時過濾數據,並拋棄不需要的用戶。其中介紹了這個問題,你有沒有訪問服務器端代碼?如果是這樣,你可以在那裏過濾並且不返回與不同用戶關聯的數據