Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/07/2014, 14:56
Avatar de cristian_cena
cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
backbone: ¿como pasar una colección a un router?

Hola, comentarles que tengo una colección llamada catalogo_de_productos
Código Javascript:
Ver original
  1. var Producto = Backbone.Model.extend({});
  2. var Catalogo = Backbone.Collection.extend({ model : Producto });
  3. var Vista = Backbone.View.extend({});
  4.  
  5. var catalogo_de_productos = new Catalogo([
  6.     { nombre : "el abuelo marsala", precio: 42.75,  categoria : "vinos" },
  7.     { nombre : "moscato promesa", precio: 14.5,  categoria : "vinos" },
  8.     { nombre : "black label x750", precio: 577,  categoria : "whiskys" },
  9.     { nombre : "red label x750", precio: 363,  categoria : "whiskys" }
  10. ]);
  11.  
  12. $(function(){  
  13.     var productos = { productos : catalogo_de_productos.toJSON() };
  14.     var template = _.template( $("#lista_template").html(), productos);
  15.     var index = new Vista({ el: $("#lista_container") });
  16.     index.$el.html( template );
  17. });
que recorro y muestro por completa en el siguiente template
Código HTML:
Ver original
  1. <div id="lista_container"></div>
  2. <script type="text/template" id="lista_template">
  3.     <tr>
  4.         <td><b>producto</b></td>
  5.         <td><b>precio</b></td>
  6.     </tr>  
  7.     <% var n = 0;%>
  8.     <% _.each(productos, function(producto) { n++;%>
  9.     <tr>
  10.         <td><% print(producto.nombre); %></td>
  11.         <td><% print(producto.precio)); %></td>            
  12.     </tr>    
  13.     <% }); %>

Hasta acá funciona perfecto, solo que ahora quiero mostrar en una vista toda la colección y en otra solo los objetos cuya categoría sea igual a "whiskys" , para lo cual preparo el objeto que pasaré a la vista
Código Javascript:
Ver original
  1. var cat = catalogo_de_productos.where({categoria: "whiskys"});
  2. var whiskys = { productos : JSON.parse(JSON.stringify(cat)) };
  3. console.log(whiskys);  // { productos : [ { nombre : "black label x750", precio: 577,  categoria : "whiskys" }, { nombre : "red label x750", precio: 363,  categoria : "whiskys" }]}
y escribo las rutas
Código Javascript:
Ver original
  1. var Ruta = Backbone.Router.extend({
  2.     routes : {
  3.         "" : "todos",
  4.         "whiskys" : "whiskys"
  5.     },
  6.     todos   : function () { console.log("todos los productos"); },
  7.     whiskys : function () { console.log("solo los whiskys");    }
  8. });
  9. var appRouter = new Ruta();
  10. Backbone.history.start();
Las rutas funcionan perfecto pero no se como pasar el objeto "whiskys" previamente preparado para que funcione dentro de la función de ruta tambien llamada "whiskys".
Espero me puedan echar una mano en este punto, desde ya les agradezco si pueden compartirme algun link para estudiar.
Un saludo