ok so, apparently using this.$el.html(this.template(this.model.toJSON()));
in my render function on the ButtonInCanvas
view was causing the problems. The aforementioned gets the "caption" attribute of the model, and passes it into the view as html content.
There solution is to put this.$el.html(this.template(this.model.toJSON()));
in the init function.
In case it's needed to be done in the render function, there should be another div, within the one we want to resize, that will get the caption property from the model. In the following JSBIN you can see a solution using a div inside the button. (thanks to user shoky, from the #jquery freenode irc channel for the implementation and his heads up)
http://jsbin.com/uxequq/1/edit
I don't really understand why the problem was occurring though (maybe this.template(this.model.toJSON())
in my render function, was causing a re-rendering of the view?) so feel free to point me out why, and help me understand further!
Cheers!