Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: str_null en 1 Septiembre 2015, 01:35 am



Título: [Resuelto] Problema Filtro Angular JS
Publicado por: str_null en 1 Septiembre 2015, 01:35 am
Hola, vengo con una duda a ver si alguien puede echarme una mano.

Estoy con una galería de imagenes. El funcionamiento es como sigue. Primero aparece una imagen para cada coleccion. Si el usuario pulsa una de las imagenes abre una ventana modal con todas las fotos de la coleccion. Si el usuario pulsa una de las fotos de la coleccion se abre en grande esa foto.

Bien, tengo mas o menos todo montado y va bien pero no logro saber como hacer un filtro dinámico que muestre solo las fotos de la coleccion que el usuario pulsa para concretar os copio el código la idea que llevo.

Asi declaro el objeto de la galeria con las rutas y la coleccion que pertenece cada imagen. Pongo una aunque imaginais son mas.

Código
  1. $scope.galleryItems = [
  2.    {"portada" : true,  "collection" : 1, "miniature" : "rutaminiatura.jpg", "source" : rutaimagen.jpg", "alt" : "textoalt"},
  3.  
  4.    ];
  5.  

Uso ng-repeat en la galeria para listar primero las portadas, que son el link digamos a cada coleccion:
Código
  1. <div ng-repeat="galleryItem in galleryItems | startFrom : (currentPage - 1) * pageSize | limitTo : pageSize | filter: {portada : true}">
  2.  
  3. <img src="{{galleryItem.miniature}}" alt="{{galleryItem.alt}}" ng-click="showCollection($index, {{galleryItem.collection}})"></img>
  4.  

En caso de hacer click a una coleccion llama la funcion showCollection a la que paso el indice y la coleccion que tiene que mostrar. La funcion showCollection muestra una ventana modal asi:
Código
  1. $scope.showCollection=function (index, Ncollection) {
  2.  alert(Ncollection);
  3.  $scope.numCollection = Ncollection;
  4.  
  5.  var modalInstance = $modal.open({
  6.      templateUrl: 'views/gallery-collection.html',
  7.      controller:'GalleryCollectionCtrl',
  8.          resolve: {
  9.                    galleryObj: function() {
  10.                        return $scope.galleryItems;
  11.                    },
  12.                    ind: function() {
  13.                      return index + ($scope.currentPage-1)*$scope.pageSize;
  14.                    },
  15.  
  16.            }
  17.        });
  18.  

Y ahora viene cuando la matan, ese template contiene lo siguiente

Código
  1. <section class="gallery">
  2. <ul class="row">
  3.  
  4. <li class="col-xs-12 col-sm-4" ng-repeat= "galleryItemC in galleryItemsC | [i][b]filterCollection : true[/b][/i]">
  5. <p>{{$scope.numCollection}}ASDASD</p>
  6. <img role="button" src="{{galleryItemC.miniature}}" ng-click="showModal($index)" />
  7. </li>
  8.  
  9. </ul>
  10. <i ng-click="cancel()" class="exit fa fa-times"></i>
  11. </div>
  12. </div>
  13. </section>

He intentado añadir un filtro que no ha funcionado en negrita lo marco es el siguiente

Código
  1. .filter ('filterCollection', function() {
  2.  return function(data) {
  3.    return data.collection == $scope.numCollection;
  4.  }

Aun asi no funciona. Pero mi duda es como creeis que puedo hacer para filtrar solo las imagenes de una coleccion cuyo valor almaceno en una variable y llega al controlador que controla el template. A partir de ahi como la uso para aplicarla a un filtro? Algo se me escapa.. a ver si podeis echarme un cable. Un saludo!


Título: Re: Problema Filtro Angular JS
Publicado por: str_null en 1 Septiembre 2015, 01:43 am
Ok, releyendo el mensaje he visto el fallo. Me había dejado de pasar la variable al controlador realmente por los puentes que hace al cambiar de controlador en cada ventana modal..andaba rayado y era una chorrada, en fin, gracias igual... Saludos