Не удалось обновить элемент управления деревом новыми ветвями после успешного вызова RemoteObject
-
25-09-2019 - |
Вопрос
Я пытаюсь заполнить компонент mx: tree значениями, которые я получаю от BlazeDS.Возвращаемые данные из BlazeDS в порядке - это ArrayCollection объектов значений папок.
Мне было поручено использовать Cairngorm для этого проекта.Я довольно новичок во Flex и Cairngorm.Согласно ограниченной документации, которую я прочитал в Интернете, я должен заполнить модель данными, поэтому я вставил туда коллекцию массивов.
С чем я застрял, так это с попыткой обновить компонент дерева.Я чувствую, что мне нужен какой-то способ уведомить компонент контейнера для дерева о том, что данные (т. е.вложенные папки) доступны в модели.Я надеялся, что можно было бы запустить функцию в компоненте контейнера, чтобы добавить вложенные папки в качестве дочерних элементов выбранного узла (я мог бы добавить это в модель перед вызовом удаленного объекта, я думаю), затем запустить tree.invalidateList() и tree.validateNow().Есть какие-нибудь идеи?
Решение
Я нашел способ сделать это, хотя я не уверен, что это рекомендуемый способ.
Я получил командный класс, чтобы привязать ArrayCollection папки VOs к свойству с именем "вложенные папки" в модели.Я использовал ChangeWatcher в родительском контейнере дерева, чтобы просмотреть свойство модели "вложенные папки" и запустить функцию для обновления узла дерева, когда это потребуется.
Если кто-то знает способ получше, пожалуйста, скажите.Я надеялся найти кулинарную книгу Кэрнгорма или статью о лучших практиках, но пока что ни на что подобное не натыкался.Документация Cairngorm кажется довольно скудной - я удивлен, что это самый популярный фреймворк Flex, учитывая этот факт.