* Module dependencies.
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
h1= title
p Welcome to #{title}
script(src="/javascripts/jquery.js")
script(src="/javascripts/underscore.js")
script(src="/javascripts/backbone-min.js")
script(type="text/javascript")
var Mensaje = Backbone.Model.extend({
initialize: function() {
this.bind('error', function(model, err) {
alert(err.message);
});
}
});
var Mensajes = Backbone.Collection.extend({
// defino el backend para los mensajes
backend: 'mensajes',
model: Mensaje,
initialize: function() {
// (binding al default, no probe aun hacer uno por uno)
this.bindBackend();
}
});
var VistaMensaje = Backbone.View.extend({
tagName: 'li',
events: {
'click .delete': 'delete'
},
initialize: function() {
_.bindAll(this, 'render', 'delete');
this.template = _.template($('#template-mensaje').html());
},
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
return this;
},
delete: function(e) {
e.preventDefault();
this.model.destroy();
}
});
var VistaMensajes = Backbone.View.extend({
events: {
'click .send': 'send',
'keypress .mensaje': 'keypress'
},
initialize: function(options) {
_.bindAll(this, 'render', 'send', 'keypress');
this.collection.bind('add', this.render);
this.collection.bind('change', this.render);
this.collection.bind('remove', this.render);
this.collection.bind('reset', this.render);
this.collection.fetch();
this.template = _.template($('#template-mensajes').html());
},
render: function() {
$(this.el).html(this.template());
this.collection.each(function(mensaje) {
var view = new VistaMensaje({ model: mensaje });
this.$('ul').append(view.render().el);
});
return this;
},
send: function() {
this.collection.create({ texto: this.$('.mensaje').val() }, { wait: true });
this.$('.mensaje').val('');
},
keypress: function(e) {
if (e.which === 13) this.send();
}
});
$(function() {
window.mensajes = new Mensajes();
new VistaMensajes({ el: $('#mensajes'), collection: mensajes }).render();
});
script(id="template-mensaje", type="template")
| <%= texto %>
a(class="delete", href="#")
[x]
script(id="template-mensajes", type="text/template")
input(class="mensaje", type="text")
input(class="send", type="submit", value="Mandar Mensaje")
ul
h1
Mensajes
div#mensajes