MVVM Коллекции загружаются асинхронно - PullRequest
0 голосов
/ 03 марта 2011

У меня есть модель представления с 5 коллекциями.

Все они загружаются асинхронно.

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

Я чувствую, что что-то упустил.

Ответы [ 2 ]

0 голосов
/ 06 марта 2011

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

Если нет, тогда оставьте все свои коллекции равными нулю / ничему (многие люди инициализируют их в конструкторе) и обратном вызове загрузки каждого из них. Создайте экземпляр коллекции перед ее заполнением, оставив ее пустой, если никакие объекты / результаты не возвращаются. Затем вызывается функция, которая проверяет, что ни одна из коллекций не является нулем / ничем, и вызывает метод inotify для всех них одновременно.

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

0 голосов
/ 03 марта 2011

Когда ваш MainViewModel (тот, что с "главной сущностью") завершает загрузку, установите его свойство SelectedRecord. Установка этого свойства должна вызвать событие или передать сообщение, которое могут прослушивать другие ваши ViewModels.

Когда другие ViewModels получают сообщение от модели основного вида, установите флаг IsDirty в значение true. Другие ViewModel будут тогда устанавливать свои свойства SelectedData всякий раз, когда они завершают загрузку (в случае, если MainViewModel закончил первым) или когда IsDirty установлен в true - в зависимости от того, что наступит раньше

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