Backbone.js — разделение источника данных?

#javascript #model-view-controller #backbone.js #decoupling

#javascript #модель-представление-контроллер #backbone.js #разделение

Вопрос:

У меня есть эта модель Backbone:

 graphModel
 attributes
   country
   indicator
   year
  

С соответствующим представлением:

 graphView
 render()
   this.model.get(...)
  

Приложение также имеет общий источник данных, в который загружаются данные csv:

 dataSource
  indicators
    indicatorA
      country
        year
    indicatorB
      countries
        years
  

Каждый раз, когда атрибуты модели изменяются, я хотел бы проверить, загружены ли данные для этой комбинации атрибутов, прежде чем запускать события изменения.

Мой вопрос: каков хороший способ отделить источник данных от базовой модели и представления, чтобы я мог легко попробовать с введенными фиктивными данными?

Ответ №1:

Мне немного непонятно, когда вы говорите о приложении, имеющем источник данных, заполненный данными CSV, имеете ли вы в виду серверную часть приложения, с которой затем взаимодействует магистраль, или что-то на стороне клиента.

Но в любом случае. Я могу поделиться нашим опытом по некоторым вопросам разделения. Мы часто создаем модели и используем возможность Backbone иметь значения по умолчанию, подобные этому примеру из документации Backbone:

переменная Meal = Backbone.Model.extend({ значения по умолчанию: { «закуска»: «салат цезарь», «основное блюдо»: «равиоли», «десерт»: «чизкейк» } });

С помощью предварительно заполненной таким образом модели мы можем затем привязать представление к модели и отобразить эти данные на странице. Аналогично, если у вас есть какой-либо другой источник, который вы можете придумать для легкого получения нужных данных (готовый файл может быть загружен с помощью функции jQuery .load() или содержимое текстовой области может быть выгружено с помощью функции model .set() модели).

Ответ №2:

Насколько я понял, у вас есть один URL для разных моделей, и вы хотите каким-то образом проверить его, прежде чем устанавливать или изменять модель.

Вы можете использовать parse() метод в модели для изменения ее содержимого, см. http://documentcloud.github.com/backbone/#Model-parse