Как отправить аргумент в компонент? - PullRequest
0 голосов
/ 11 июня 2018

У меня есть .zul файл index.zul.Он содержит еще один .zul файл Prueba1.zul.Я использую zk7.

    <window border="normal" title="Test Send Argument" apply="org.zkoss.bind.BindComposer"
            viewModel="@id('vm') @init('com.test.ControladorPadre')">
        <include type="@load(vm.mapType)" src="Prueba1.zul"/>
....
    </window>
</zk>

и

<zk>
  <window border="normal" title="Controlador 1" apply="org.zkoss.bind.BindComposer"  zclass="z-window-popup"
         viewModel="@id('vm') @init('com.test.Controlador1')" >
        <button onClick="@command('doSort')" type="button" label="BT1" />
  </window>
</zk>

Они используют разные модели представления.Я хочу отправить аргументы обратно из Prueba1.zul для обработки, чтобы отобразить в index.zul и обработать в классе ControladorPadre.

Я пытался и искал без успеха.В настоящее время я знаю только один способ - использовать BindUtils.postGlobalCommand.Я не уверен, является ли это хорошим способом обработки или существует ли другой способ решения моей проблемы.

1 Ответ

0 голосов
/ 13 июня 2018

Существует несколько решений

Первое передает вашу первую модель просмотра второй модели.

Документация из @ init гласит:

 viewModel="@id('vm') @init('org.zkoss.reference.developer.mvvm.databinding.InitVM', arg1='myValue')"

так в вашем случае:

 viewModel="@id('vm2') @init('com.test.Controlador1', arg1=vm)"

Если вы хорошо выглядите, я изменил id второго виртуального компьютера, потому что вы не хотите путать ваш зул с виртуальным компьютером.В Prueba1.zul vm также активен, и вы можете загружать (даже сохранять) данные туда.

Второй: сохранять в vm и vm1.

<textbox value="@load(vm.someText) @save(vm.someText) @save(vm1.someText)"/>

Конечно, иногда вам нужнопередать его после команды, и тогда эта опция просто не будет работать.

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

...