Хобрук: Ваш путь к мастерству в программировании

ZK Framework: обновить динамический макет с помощью foreach

Я использую forEach "myList" для рисования элементов. Теперь, когда я обновляю данные в "myList", моя страница не может перерисовываться.
Я пробовал использовать invalidate(), но не ОК.
Пожалуйста, помогите мне.
Большое спасибо.

Мой код ниже:

<vlayout id="mainLayout" >
        <groupbox hflex="1" mold="3d" open="${forEachStatus.index==0}" forEach="${vm.myList}">
            <caption label="${each.groupName}" sclass="customIcon">
                <span id="arrow-${forEachStatus.index}" class="open-${forEachStatus.index}" />
            </caption>
            <vlayout hflex="1" spacing="10px">
                <groupbox hflex="1" mold="3d" forEach="${each.listData}" open="false">
                    <caption label="${each.groupName}" sclass="customIcon">
                    </caption>

                    <listbox emptyMessage="Empty data" mold="paging" pageSize="10"
                             sizedByContent="true" hflex="1">
                        <!--Listbox content here-->
                    </listbox>

                </groupbox>
            </vlayout>



        </groupbox>
    </vlayout>

ViewModel

 @Command("onSearch")
@NotifyChange("myList")
public void onSearch() {
    try {
        //Business OK here, reload myList OK
        if(mainLayout!=null){
            mainLayout.invalidate();
        }
    } catch (Exception e) {
        mLogger.error(e.getMessage(), e);

    }

}
16.05.2018

Ответы:


1

Не видя полного кода (или, по крайней мере, большей его части), трудно помочь. Похоже, вы используете MVC и MVVM. Я рекомендую придерживаться MVVM. В частности, это может оказаться полезным.

Используйте children в своем vlayout для перебора ваших myList элементов:

<vlayout children="@load(vm.myList)">
    <template name="children">
        <groupbox hflex="1" mold="3d" open="@load(each.index eq 0)">
            <!-- contents of groupbox here -->
        </groupbox>
    </template>
</vlayout>

В вашем методе onSearch() вам не нужно аннулировать mainLayout. @NotifyChange("myList") должен перезагрузить ваш myList (при условии, что у вас есть метод получения в вашем классе ViewModel)

16.05.2018
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

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

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..