Вот
https://github.com/jashkenas/backbone/blob/master/... главный учебник
Я так понимаю что
appointments -коллекция
appointments.fetch() получает данные от сервера:
Line: 999
fetch: function(options) {
//добавляем параметры по умолчанию
// parse - говорит о том, что ответ от сервера мы из json превращаем в объект
options = _.extend({parse: true}, options);
var success = options.success;
var collection = this;
//добавляем обработку запроса
// вернемся к нему позже
options.success = function(resp) {
...
};
wrapError(this, options);
// запускаем Backbone.sync
return this.sync('read', this, options);
},
// итак мы подготовили обработчики запроса
// теперь запрос
Line: 1338
Backbone.sync = function(method, model, options) {
//Наш метод read - значит запрос будет GET
var type = methodMap[method];
//далее куча опций
...
// и проверка url ( коллекция должна иметь url, мы же об этом помним)
if (!options.url) {
params.url = _.result(model, 'url') || urlError();
}
// далее всякая дребедень )))
...
// запускаем jQuery ajax ( ищи в jQuery)
var xhr = options.xhr = Backbone.ajax(_.extend(params, options));
// Коллекция кричит "Эй я запрос послала"
model.trigger('request', model, xhr, options);
return xhr;
// Далее мы сидим, курим, короче ждем пока запрос наш сервер вернет.
// Как только это произошло, в дело вступает options.success (помните в самом начале)
Line 1006
options.success = function(resp) {
// в нашем случае метод set
// т.е мы будем добавлять данные коллекцию
var method = options.reset ? 'reset' : 'set';
// как я и написал чуть выше это выглядит так collection.set(resp,options)
collection[method](resp, options);
// эта ерунда на не интересует
if (success) success.call(options.context, collection, resp, options);
// Коллекция крикливая попалась
// И крик ее от том, что что она все данные получила и решила пойти постать
collection.trigger('sync', collection, resp, options);
};
с set попробуйте разобраться сами. Там как раз о
silent: true