2014-03-03 23 views
0

我有一组离子框架标签的这放映电影的列表:通变到离子框架页(基于AngularJS)

<script id="tabs.html" type="text/ng-template"> 
    <ion-tabs tabs-style="tabs-icon-top" tabs-type="tabs-positive"> 
    <ion-tab title="Movies" icon="ion-film-marker" href="#/tab/movies"> 
     <ion-nav-view name="movies-tab"></ion-nav-view> 
    </ion-tab> 
    </ion-tabs> 
</script> 

<script id="movies.html" type="text/ng-template"> 
    <ion-view title="'Movies'"> 
    <ion-content has-header="true" padding="false"> 
     <div class="list"> 
     <a ng-repeat="item in movies" href="#/tab/movies/{{item.id}}" class="item item-thumbnail-left item-text-wrap"> 
      <img ng-src="{{ item.image }}"> 
      <h2>{{ item.title }}</h2> 
      <h4>{{ item.desc }}</h4> 
     </a> 
     </div> 
    </ion-content> 
    </ion-view> 
</script> 

每个列表中的项目被链接到#/tab/movies/{{item.id}},为例如,#/tab/movies/27。我的电影在CONTROLER

.controller('MyCtrl', function($scope) {  
    $scope.movies = [ 
    { id: 1, title: '12 Rounds', desc: 'Detective Danny Fisher discovers his girlfriend has been kidnapped by a ex-con tied to Fisher\'s past, and he\'ll have to successfully complete 12 challenges in order to secure her safe release.', image: ''} 
    ]; 

我的网页被路由定义如下:

.config(function($stateProvider, $urlRouterProvider) { 

    $stateProvider 
    .state('tabs', { 
     url: "/tab", 
     abstract: true, 
     templateUrl: "tabs.html" 
    }) 
    .state('tabs.movies', { 
     url: "/movies", 
     views: { 
     'movies-tab': { 
      templateUrl: "movies.html", 
      controller: 'MyCtrl' 
     } 
     } 
    }) 

    $urlRouterProvider.otherwise("/tab/movies"); 

}) 

我现在要做的就是点击上面的列表上的每个项目时,它需要它的自己的页面,#/tab/movies/{{item.id}},我可以在其中显示诸如item.titleitem.image之类的内容,以及后退按钮以进入列表。

为了做到这一点,从我所知道的,我需要创建一个空白ng-template与信息的占位符,然后一些如何传递这个信息,当它点击,但我不知道如何做这个。

回答

2

你在找什么可能是服务/工厂,你可以存储电影列表,然后检索完整列表MyCtrl或只是一个电影页面的电影对象。

angular.module('myAppName') 
.factory('MovieService', function() { 
    return { 
     MoviesList: [ 
      {movie object} 
     ], 
     GetAllMovies: function() { 
      return this.MoviesList; 
     }, 
     GetMovieById: function (id) { 
      //iterate MoviesList and return proper movie 
     } 
    } 
} 

该服务可以被再注入到你的控制器

.controller('MyCtrl', function($scope, MoviesService) {  
    $scope.movies = MoviesService.GetAllMovies(); 
} 

,并同样适用于电影视图控制器:

.controller('ShowMyMovie', function($scope, MoviesService) {  
    $scope.movie = MoviesService.GetMovieById(//retrieve_id_from_routing_service); 
} 
模板这种观点,你可以简单地使用{

然后{movie.title}}来显示信息