KnockoutJS - несколько частичных видов на главном экране? - PullRequest
11 голосов
/ 28 июня 2011

Я пытаюсь портировать существующее приложение asv mvc для использования knockoutjs (чистый js / html), так как мне больше не нужны какие-либо функции в рамках asp mvc.Однако одна проблема, которую я могу предвидеть, заключается в том, как я обращаюсь с некоторыми из своих страниц.

У меня есть одна страница, которая содержит около 12 частичных просмотров, каждый из которых имеет свою собственную модель.Теперь с Knockout JS кажется, что вы должны иметь только 1 viewmodel / view на страницу, однако на странице, которую я имею, содержится большое количество информации, разделы будут похожи на:

  • Данные клиента
  • Адрес клиента
  • Последние заказы клиента
  • Карты клиентов
  • Средства клиентов
  • ...

Чтобы сделать вещи более сложными, если некоторые детали изменяются в части, необходимо изменить данные в другой части.Допустим, вы удалили карту, которая затем должна сообщить контролю средств, что у нее больше нет карты, поэтому у нее нет средств.(Это все абстрактный пример, но, надеюсь, иллюстрирует суть)

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

Так что же мне просто сделать одну большую модель для этого представления и просто разобраться с ней?или есть ли способ заставить взгляды разговаривать друг с другом?

Ответы [ 2 ]

4 голосов
/ 02 октября 2012

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

Лучшее решение - построить систему pub / sub на основе ko.subscribable. Связь между моделями представлений затем облегчается путем управления подписками на различные события. Это немного больше работы заранее, но это принесет дивиденды в будущем.

Здесь - это запись в блоге, которая расширяет тему. Я очень рекомендую этот блог. Это отличный ресурс для специфичных для нокаута задач и стратегий.

3 голосов
/ 28 июня 2011

Моя стратегия состоит в том, чтобы использовать одну модель большого представления.Независимо от того, что вы говорите, частичные представления - это концепция на стороне сервера, и как только все будет перенесено на сторону клиента, это будет большой объем информации на одной странице.что каждый код манипуляции Javascript написан в своем частичном представлении.Это облегчает отслеживание функциональности и ее соответствующего кода.

Таким образом, в основном вы заполняете свой основной объект массива Customers на главной странице, а затем вызываете функции для заполнения Details, Addresses и т.д., которые соответственно определены в каждом изчастичный вид.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...