Estoy haciendo una aplicación donde se pintan diferentes rectángulos en un lienzo y estoy tratando de hacerlo con Backbone. Tengo un modelo llamado cuadro:Hacer una vista de Backbone.js para dibujar objetos en un lienzo
Box = Backbone.Model.extend({
defaults: {
x: 0,
y: 0,
w: 1,
h: 1,
color: "#FF9000",
linewidth: 3,
id: 0,
},
drawBox: function(ctx) {
ctx.fillStyle = "#FF9000";
ctx.globalAlpha = 0.1;
ctx.fillRect(this.get("x"), this.get("y"), this.get("w"), this.get("h")); //transparent box in the back
ctx.globalAlpha = 1;
ctx.strokeStyle = this.get("color");
ctx.lineWidth = this.get("linewidth");
ctx.strokeRect(this.get("x"), this.get("y"), this.get("w"), this.get("h")); //rectangle on top
}
});
Y también tengo una colección de este modelo Box:
BoxSet = Backbone.Collection.extend({
model: Box
});
Lo que tengo en mente es tener un punto de vista en el que puedo poner a cada modelo de caja de la colección BoxSet en un lienzo usando el método drawBox en el modelo Box, pero hasta ahora todos los tutoriales y ejemplos tratan con plantillas de texto simples y no puedo encontrar la manera de lograrlo.
¿Alguna idea sobre cómo se puede hacer esto usando las vistas de Backbone?
Gracias de antemano.
Gracias @nikoshr, esta es una gran solución. Me da más control sobre los cuadrados y lo hace más flexible para hacer más modificaciones. – rpabon
¿Alguna idea sobre cómo hacer que SetView pinte o borre un cuadro del lienzo cada vez que se agrega/elimina de la colección? – rpabon
@rpabon Agregué una posible solución donde todo se vuelve a dibujar. Podría ser interesante comprobar si un conjunto de instrucciones se puede definir como un objeto y manipularse de forma independiente en un lienzo. – nikoshr