Q:

Backbone: Render function fires for each instance of model

I have 4 instances of a model.  Why is the render function firing four times?  I would like it to only render once (and loop through each model and fire off a handlebars template).  On the front-end, if I have four instances of the model, I'm getting 16 templates.  Apologies if I'm describing this with the wrong nomenclature.  I'm a noob. 
define(['handlebars', 'text!event-template'],
    function(Handlebars, EventTemplate) {

        var EventView = Backbone.View.extend({
            el: $('#event-list')[0],

            initialize: function(collection) {
                this.collection = collection;
                this.listenTo(this.collection, 'add', this.render);
                console.log('View Event : Initialized');
            },

            render : function() {
                var _el = this.$el; //refrencing the el: above

                _.each(this.collection.models, function(model) {
                    var template = Handlebars.default.compile($(EventTemplate).html());
                    _el.append(template(model.attributes));
                });
                console.log('rendering');
            }
        });
        return EventView;
    }
);

A:

When a collection is sync'ed it fires an add for each model added to the collection.   If you want to bind to the add, what I usually do is make a method called "append" to add a single model to the view.  The add event will iterate through the collection, so you won't need a "loop" on the view which keeps it clean and more of a One-to-One relationship between adding into a collection and adding to the view.  So I would change your code to this
define(['handlebars', 'text!event-template'],
    function(Handlebars, EventTemplate) {

        var EventView = Backbone.View.extend({
            el: $('#event-list')[0],

            initialize: function(collection) {
                this.collection = collection;
                this.listenTo(this.collection, 'add', this.append);
                console.log('View Event : Initialized');
            },

            append: function( model ) {
                var _el = this.$el; //refrencing the el: above
                var template = Handlebars.default.compile($(EventTemplate).html());
                _el.append(template(model.attributes));

                console.log('adding');
            }
        });
        return EventView;
    }
);

This is a nice implementation.   After this, if you "add" a model to the collection, automatically, it'll will show up in the DOM right away. 