2016-07-24 2 views
0

Привет, У меня есть проблема с методом parse !!!!!Backbone JS collection parse

, как вы можете видеть в магистральной JS document метода синтаксического анализа в коллекции имеет следующий синтаксис: collection.parse (ответ, варианты)

1) Я хочу знать, почему мы должны использовать/переопределить метод анализа и каково его основное использование?

2) Я прочитал некоторую статью, и я понял, что метод parse дает нам структуру данных для клиентской стороны.

3) У меня действительно есть проблема для понимания аргументов метода parse. - что такое опции для ??

Можете ли вы привести пример использования метода анализа с двумя параметрами?

Спасибо!

ответ

1

Документов есть хорошее резюме:

синтаксического анализ вызываются всяким раз, когда Backbone модель коллекции будет возвращена сервером, в выборке. Функция передается объекту исходного ответа и должна возвращать массив атрибутов модели, которые будут добавлены в коллекцию. Реализация по умолчанию - это нет-op, просто проходя через ответ JSON.

http://backbonejs.org/#Collection-parse

1) Вы должны возвращать массив атрибутов модели. Если у вашего ответа JSON есть только это, вам ничего не нужно делать. Обычно переопределение разбора используется просто для указания внутри объекта JSON в правой части. Например, если ваш ответ был таким:

{ 
    httpCode: 200, 
    responseMessage: 'success', 
    data: [ {model1}, {model2} ...] 
} 

Затем вам нужно будет переопределить parse, чтобы указать на data ключа:

parse: function(response) { 
    return response.data; 
} 

2) Они имели в виду, что response аргумент является объектом, который был возвращенный сервером.

3) Второй options arg - это options, который был передан на звонок .fetch. Вам не нужно беспокоиться об этом, если вы не хотите использовать определенную логику на основе URL-адреса, метода HTTP или чего-либо еще, что может быть передано для fetch (и jQuery.ajax опций и некоторых базовых, таких как reset).

4)

parse: function(response, options) { 
    // For some reason POST requests return a different data structure. 
    if (options.method === 'POST') { 
    return response.data; 
    } 

    return response; 
} 
Смежные вопросы