Examples

Lets build a simple fake guestbook for users to sign (You haven't seen one for a while, did you?). Nothing is persisted and saved to database - so feel free to sign it.



For our fake guestbook to work we had to write following html:


            
        

Our guestbook Simple view type is defined like so:


            var Guestbook = SimpleView.extend({
                events: {
                    'submit form': 'submitEntry'
                },
                submitEntry: function(e) {
                    e.preventDefault();
                    var $input = this.$('.entryInput');
                    var message = $input.val();
                    message.length && this.addEntry(message);
                    $input.val('');
                },
                addEntry: function(message) {
                    var entryView = this.addView(new GuestbookEntry({message: message}));
                    entryView.$el.prependTo(this.$('.entryList'));
                }
            });

            new Guestbook({$el: '.guestbook'});
        

Guestbook entries are written as follows:


            var GuestbookEntry = SimpleView.extend({
                assignOptions: true,
                defaults: {
                    className: 'guestbookEntry',
                    btnRemoveClass: 'removeEntry'
                },
                initialize: function(options) {
                    this.$el = $(this.template(this.options));
                },
                events: {
                    'click .{{this.options.btnRemoveClass}}': 'remove'
                },
                template: function(data) {
                    return '<div class="' + data.className + '">\
                                <span class="message">' + data.message + '</span>\
                                <button class="' + data.btnRemoveClass + '">×</button>\
                            </div>';
                }
            });