[Backbone]6. Collections.

Define a collection:

var AppointmentList = Backbone.Collection.extend({model: Appointment});

RESET the json:

var appointments = new AppointmentList();
var json = [
  {title: 'Back pain'},
  {title: 'Dry mouth'},
  {title: 'Headache'} 
];
appointments.reset(json);

 Get url and fetch json data:

var AppointmentList = Backbone.Collection.extend({
  url: '/appointments',
  model: Appointment
});
var appointments = new AppointmentList();

appointments.fetch();

This Dr. Goodparts does not trust us when we tell him we are successfully loading data from the server into our collection.

To prove him wrong, display an alert with the number of items in the collection by listening for the reset event.

var appointments = new AppointmentList();
appointments.fetch();
appointments.on('reset', function(){
    alert(appointments.length);
});

Wouldn't ya know, our users don't like getting alerts every time we fetch new data for our collection.

Update the fetch call below to not fire the reset event.

//By default, when fetch or add model, the reset event will be triggered.
//TO disable the reset event, can use 
appointments.fetch({silent: true});

Use an event listener to log to the console the model's title anytime a model is added to the appointments collection.

var appointments = new AppointmentList();
appointments.on('add', function(appointment){
    console.log(appointment.get('title'));
});

There are a lot of appointments in our collection and Dr. Goodparts wants a list of all appointment titles so he can arrange his equipment for the day.

Use the map iteration function to return an array of appointment titles and assign to the titles variable.

var titles = new Array();
appointments.map(function(appoinment){
    titles.push(appoinment.get('title'));
});

 

posted @ 2014-08-02 21:28  Zhentiw  阅读(149)  评论(0编辑  收藏  举报