2015-03-13 2 views
0

i'm new in AngularJS, и я пытаюсь сделать подробный вид из списка фильмов, когда вы выбираете один фильм (щелчок в заголовке) из представления «дома», который предполагается перенаправить вы к новому представлению с деталями выбранного фильма, но я не могу понять, как это сделать. я видел много учебников, но все работает для меня, надеюсь, что вы можете мне помочь, спасибо!Подробный просмотр фильма Angularjs

здесь является частью кода: http://jsfiddle.net/3fu0gr81/

это пример моего файла JSON:

[{ "Title": "Birdman", 

    "Plot": "A washed-up actor, who once played an iconic superhero, battles his ego and attempts to recover his family, his career and himself in the days leading up to the opening of his Broadway play.", 

    "Year": "2014", 

    "Director": "Alejandro González Iñárritu", 

    "Genre": "Comedy", 

    "Duration": "119 min", 

}]

+0

почему бы не вызвать завод в контроллере movieDetail только и не controller1 – V31

+0

спасибо, я собираюсь исправить это, но у меня нет на мой вопрос решается еще – apra2015

+0

вы можете создать сервис и передать данные между контроллерами, используя эту услугу – V31

ответ

0
myApp.controller('MovieDetail', ['$scope', '$routeParams','$http',function($scope,$routeParams,$http){ 
    $http({ 
       method: 'GET', 
       url: 'movie.json' 

    }).success(function(data){ 
     $scope.movies = data; 
    }); 

}]); 

здесь $ scope.movies, содержащие все фильмы данные

с помощью ng-repeat u можно распечатать это на вид

<div ng-repeat="movie in movies"> 
    <li>{{movie.name}}</li> 
</div> 

Если и хотите конкретные средства кино, и есть для фильтрации с $ routeParams.movieId

$ scope.filterId = $ routeParams.movieId;

, а также вы можете получить одну запись через сервис также

myApp.controller('MovieDetail', ['$scope', '$routeParams','$http',function($scope,$routeParams,$http){ 
    $http({ 
       method: 'GET', 
       url: 'movie.json', 
      params:{"id":"$routeParams.MovieId"} 
    }).success(function(data){ 
     $scope.movies = data; 
    }); 

}]); 
+0

, и который будет кодом в представлении деталей? – apra2015

0

Я переработан код хранения данных фильмов в службе и доступа к ней в контроллере после того, как вид изменяется. Вы можете заметить, что я не использую переменную $scope в любом месте, и это личное предпочтение. Я чувствую, что использование синтаксиса controller as является более смысловым и понятным. Если у вас есть вопросы, дайте мне знать.

Приложение следует по этому пути в настоящее время:

1) вызовите метод списка в movie service для загрузки данных фильмов с использованием $http службы

2) Хранить в том, что данные в частном объекте доступным методом на Movie service и передать ее обратно в контроллер

3) Создание ссылки в представлении для каждого заголовка ролика, содержащего название фильма в качестве параметра маршрута

4) В окне подробных сведений используйте услугу $routeParam, чтобы получить название фильма, нажав на и вызвать новый метод getDetails на Movie service, чтобы вернуть детали этого фильма.

Рабочая Plunk

http://plnkr.co/edit/zSyatT8JAHoBUQ3D2Zs6?p=preview

+0

Спасибо, что ваш метод действительно работает, но что, если я хочу добавить название фильма или другие атрибуты вместо всей информации в подробном представлении?есть какой-либо способ доступа к этим свойствам, или это просто добавляет все, что находится в json-файле? в моем случае мне нужно получить доступ к этим свойствам, потому что у меня есть массив участников в json-файле, и в представлении предполагается, что это кнопка, которая показывает этот конкретный массив в выбранном фильме. – apra2015

+0

Уверен, что это может быть. Это зависит только от того, как структурированы ваши данные. У вас может быть ссылка внутри деталей, в которой говорится о актерах, и она передает параметр фильма для представления актеров, и у контроллера актеров есть логика для отображения актеров. – richbai90

+0

Не могли бы вы добавить его в предыдущий пример? потому что я не мог понять, как их отображать. в других кодах я видел что-то вроде: {{movie.Title}} для доступа к заголовку, например, но ваш код совершенно другой. – apra2015