Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE HTML>
<html>
<head>
  
    <meta charset="UTF-8">
    <title>Backbone Basics</title>
</head>
<body>
  
  <div id="person-ctn"></div>
  
  
  
<script id="person-template" type="text/html">
    <p>Hi! My name is {{name}}, I'm a {{age}} year old {{gender}} from {{country}}.</p>
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script src="http://documentcloud.github.io/underscore/underscore-min.js"></script>
<script src="http://documentcloud.github.io/backbone/backbone-min.js"></script>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0/handlebars.js"></script>
</body>
</html>
 
//Model
var Person = Backbone.Model.extend({
    
  //Default Attributes
  defaults: {
    'name': 'Joe',
    'age': 29,
    'gender': 'male',
    'country': 'UK'
  }
  
});
//Create People Collection to hold multiple Person Models
var PeopleCollection = Backbone.Collection.extend({
  model: Person,
  addPerson: function(elements, options) {
                return this.add(elements, options);
        }
});
//View
var PersonView = Backbone.View.extend({
  
//   tagName: '',
   
  //Get the template markup
  template: $('#person-template').html(),
  
  initialize: function() {  
    this.collection = new PeopleCollection([],{ });  
    var p = { name: 'James',age: 34, gender: 'male' , country: 'USA'}; 
    var p2 = { name: 'Jason',age: 31, gender: 'male' , country: 'Australia'};
    this.elementModel = new Person(p);
    this.collection.addPerson(this.elementModel);
    this.elementModel = new Person(p2);
    this.collection.addPerson(this.elementModel);
    
    
    this.$el.personCtn = $('#person-ctn');
    
//     console.log('His name is ' + this.model.get('name') );
    
    console.log(this.collection);
    
    this.render();
  },
  
  render: function() {
    
    //Compile this.template === #person-template
    var template = Handlebars.compile(this.template);
    var here = this;
    //Actually add to page
    $.each( this.collection.models , function( key, value ) {
        console.log(value);
       here.$el.personCtn.append( template( value.toJSON() ) );
    });
    
         
    return this;
  }
  
});
//Instantiate the Person View
var personView = new PersonView({
  
});
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers