Как мне автоматически выбрать первую панель в мастере декларативного додзе?

#dojo #wizard

#dojo #мастер

Вопрос:

Я создал мастер декларативного додзе в dojo 1.5, который встроен в диалоговое окно dojo, подобное этому:

 <div dojoType="dijit.Dialog" id="genWizardDialog" jsId="genWizardDialog" refreshOnShow="true" preventCache="true" title="Title">

<div dojoType="dojox.widget.Wizard" style='height: 375px; width:400px' hideDisabled="true" doneButtonLabel="someLabel">

<div id="wizard1" dojoType="dojox.widget.WizardPane" canGoBack="false" passFunction="panelOneDriver"></div>

<div id="wizard2" dojoType="dojox.widget.WizardPane" passFunction="validateBoxes" style="padding:8px; height:100%;"></div>
....I have some more panels. 

</div>
<!-- Here I have setup the cancel method. -->
<script type="dojo/method" event="cancelFunction">
     //dijit.byId("genWizardDialog").onSelected(0);         
     dijit.byId("genWizardDialog").hide();
</script>
</div>
  

В значительной степени все работает. Однако у меня есть 4 панели. Если я перейду к третьей панели и нажму «Отмена». Когда я затем нажимаю кнопку, чтобы запустить диалоговое окно додзе, я уже нахожусь на панели 3! Я хочу вернуться к панели 1. Поскольку я уже потратил время на декларативный подход, я надеюсь избежать выполнения этого программно. Я нашел сайт, на котором упоминается метод OnSelected () для выполнения этого -> http://dojo-toolkit.33424.n3.nabble.com/resetting-wizard-pane-and-contents-on-reopening-wizard-td158660.html однако это не сработало, и это само собой разумеется, поскольку при просмотре Wizard.js Я не вижу, чтобы этот метод был определен!

Ответ №1:

В вашем вставленном коде у вас есть событие cancelFunction в div диалогового окна, а не мастера. Итак, переместите <script> тег внутри div, который имеет dojoType=dojox.widget.Wizard .

Чтобы выбрать конкретную панель мастера, вы можете использовать selectChild функцию.

 <script type="dojo/method" event="cancelFunction">
    dijit.byId("genWizardDialog").hide();
    dijit.byId("genWizard").selectChild("wizard1", false);
</script>
  

В приведенном выше примере я предположил, что у вашего мастера есть идентификатор «genWizard», поэтому вам придется добавить его в div мастера.

Теперь мастер перейдет к первой панели мастера, когда вы нажмете на ее кнопку отмены.

Он не перейдет к первой панели мастера, если вы просто нажмете кнопку X в диалоговом окне. Если вы тоже этого хотите, вам нужно использовать событие onHide в диалоговом окне.

 <script type="dojo/method" event="onHide">
    dijit.byId("genWizard").selectChild("wizard1", false);
</script>
  

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

Комментарии:

1. Привет, Фроде, спасибо за ответ. Это сделало свое дело. На самом деле я просто перепутал копирование / вставку функции cancelFunction, она была в нужном месте на моем сервере, просто не в указанном выше. Но ваша точка зрения была верной. Еще раз спасибо.