#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