@Kaunov_ivan

Что делает appointments.fetch({silent: true});?

Изучаю backbone - не могу понять эту строку.
Может кто-то посоветует еще хорошие видео-уроки или лекции или кноги по backbone
  • Вопрос задан
  • 400 просмотров
Решения вопроса 1
Коллекция (скорее всего) загружается с сервера, при этом возможные события, генерируемые при этом Бэкбоном подавляются.
backbonejs.org/#Collection-fetch

loftblog.ru/category/courses/backbonejs
backbonerails.com
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
nonlux
@nonlux
Вот 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
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы