Backbone.js script to read from external JSON

Demo of proposed solution from StackOverflow question http://stackoverflow.com/questions/24952502/

HTML

<script src="https://rawgithub.com/jashkenas/underscore/1.5.2/underscore-min.js"></script>
<script src="https://rawgithub.com/jashkenas/backbone/1.0.0/backbone-min.js"></script>
<div id="profiles"></div>
<script id="profileTemplate" type="text/template">
    <div class="profile">
        <div class="info">
            <div class="date">
                <%= date %>
             </div>
             <div class="title">
                 <%= title %>
              </div>
         </div>
    </div>    
</script>

CSS

body {
    font-family: helvetica;    
	font-size: 14px;
	background: #eeeeee;
	color: #333333;
	width: 520px;
	margin: 0 auto;
}

#todoapp {
	background: #fff;
	padding: 20px;
	margin-bottom: 40px;
}

#todoapp h1 {
	font-size: 36px;
	text-align: center;
}

#todoapp input[type="text"] {
	width: 466px;
	font-size: 24px;
	line-height: 1.4em;
	padding: 6px;
}

#main {
	display: none;
}

#todo-list {
	margin: 10px 0;
	padding: 0;
	list-style: none;
}

#todo-list li {
	padding: 18px 20px 18px 0;
	position: relative;
	font-size: 24px;
	border-bottom: 1px solid #cccccc;
}

#todo-list li:last-child {
	border-bottom: none;
}
#todo-list li.done label {
    color: #777777;
    text-decoration: line-through;
}

#todo-list li .edit {
    display: none;
}
#todo-list li.editing {
	border-bottom: 1px solid #778899;
}

#todo-list li.editing .view {
	display: none;
}
#todo-list li.editing .edit {
	display: block;
	width: 444px;
	padding: 13px 15px 14px 20px;
	margin: 0;
}

#todo-list li.done label {
	color: #777777;
	text-decoration: line-through;
}

#todo-list .destroy {
	position: absolute;
	right: 5px;
	top: 20px;
	display: none;
	cursor: pointer;
	width: 20px;
	height: 20px;
}

#todoapp footer {
	display: none;
	margin: 0 -20px -20px -20px;
	overflow: hidden;
	color: #555555;
	background: #f4fce8;
	border-top: 1px solid #ededed;
	padding: 0 20px;
	line-height: 37px;
}

#clear-completed {
	float: right;
	line-height: 20px;
	text-decoration: none;
	background: rgba(0, 0, 0, 0.1);
	color: #555555;
	font-size: 11px;
	margin-top: 8px;
	margin-bottom: 8px;
	padding: 0 10px 1px;
	cursor: pointer;
}

JavaScript

//see detail -> official example
//http://backbonejs.org/docs/todos.html
//http://backbonejs.org/examples/todos/index.html

$(function(){
    var document = [
        {
            "id": "p1",        
            "date" : "AAAA",
            "title" : "BBBB",
            "background" : "CCCC"
        },
        {
            "id": "p2",
            "date" : "DDDD",
            "title" : "EEEE",
            "background" : "FFFF"
        },
        {
            "id": "p3",        
            "date" : "GGGG",
            "title" : "HHHH",
            "background" : "IIII"
        }
    ];
    //Define Model
    var Profile = Backbone.Model.extend();
    
    //Model Collection
	var ProfileList = Backbone.Collection.extend({
        model: Profile
    });
	    
    //Model View & event action
	var ProfileView = Backbone.View.extend({
        el: "#profiles",
        template: _.template($('#profileTemplate').html()),
        initialize: function(){
            this.listenTo(this.collection,"add", this.renderItem);          
        },
        render: function () {
            this.collection.each(function(model){
                 var profileTemplate = this.template(model.toJSON());
                 this.$el.append(profileTemplate);
            }, this);        
            return this;
        },
        renderItem: function(profile) {
             var profileTemplate = this.template(profile.toJSON());
             this.$el.append(profileTemplate);        
        }
    
    
    });
    
    //Make Application
	var profileList = new ProfileList(document);
    var profilesView = new ProfileView({ collection: profileList });
    profilesView.render();
    
}());