Как гуру MVC справится с этими изменениями атрибутов модели и их последствиями для контроллера? - PullRequest
0 голосов
/ 18 августа 2011

Я разрабатываю приложение JavaScript, которое должно отображать визуализацию на основе настроек в хэше URL-адреса или на основе взаимодействия с пользователем.

(На данный момент я использую Backbone.js для MVC, но я думаю, что эти вопросы можно считать независимыми от фреймворка ...?)

Допустим, пользователь просматривает состояние приложения с выбранным индикатором A и индикатором B. Пользователь меняет индикатор B на C, что происходит?

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

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

  • Доступные для отображения сущности изменятся
  • Весы изменятся
  • Метка индикатора изменится и т. Д., И т. Д. *

Один вопрос на этом этапе - что делать со всеми этими зависимыми / вычисляемыми переменными?

Должна ли модель, в этом случае, теперь также отслеживать доступность данных, масштаб и т. Д., Основываясь на изменении показателя? И должно ли оно также инициировать события изменения для всех этих вычисляемых атрибутов?

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

В этом случае произошла смена индикатора, которая должна приводить к добавлению и вычитанию значков, изменению меток и т. Д. И т. Д.

В другом сценарии может измениться только год. Должен ли контроллер затем запустить другой путь?

А в третьем сценарии могут измениться как год, так и показатели (например, когда установлен начальный хэш URL-адреса) ... еще один набор функций, которые должны запускаться в цепочке?

Я ищу надежный способ справиться с этими различными сценариями, чтобы я мог отслеживать, что и когда должно произойти. Что меня особенно интересует, так это ваше мнение о том, какие атрибуты оставить в модели и как расположить функции контроллера для того, чтобы можно было вносить небольшие изменения взаимодействия с пользователем в модель, а также изменения с несколькими атрибутами.

1 Ответ

0 голосов
/ 18 августа 2011

Я ОЧЕНЬ новичок в backbone.js, так что прими мое предложение как всю соль, с небольшим шансом наличия там какого-то вещества.

Если я правильно понимаю (одну из) ваших проблем, вам не нравится идея иметь представление, которое полностью воспроизводится при внесении изменений; но вам все еще нравится идея иметь только одно представление, присоединенное к этой модели, если это так, можете ли вы создать несколько событий рендеринга и привязать их к изменению этого конкретного атрибута?

this.model.bind('change:propertyA', _.bind(this.renderA, this));
this.model.bind('change:propertyB', _.bind(this.renderB, this));
...