Derzeit gibt es zwei Möglichkeiten, es zu realisieren. Einer mit mehr und der andere mit weniger Aufwand. Aber weniger Aufwand bedeutet auch weniger Kontrolle - mit anderen Worten jQuery Steps Griffe zeigt und versteckt die Lade-Nachricht und der Async-Aufruf selbst natürlich. Wie auch immer, die erste Lösung (weniger Aufwand) erfordert, dass Sie einen standardmäßigen asynchronen Schritt bei der Initialisierung hinzufügen, wie Sie es gewohnt sind.
<div id="wizard">
<h1>Choose</h1>
<div>
<select id="choose">
<option value="0" selected="selected">default</option>
<option value="1">extraordinary</option>
</select>
</div>
<h1>Result 1</h1>
<div data-mode="async" data-url="/rest/service/0"></div>
</div>
Dann einen kleinen Teil des Codes zum onStepChanging Ereignisse wie melc erwähnt hinzuzufügen. Dieser Code sollte die Daten des vorherigen Schritts analysieren und ggf. den asynchronen Standardschritt entfernen und einen neuen an derselben Position, aber mit einer anderen URL hinzufügen.
<script>
$(function()
{
var wizard = $("#wizard").steps({
onStepChanging: function(event, currentIndex, newIndex)
{
if (currentIndex === 0)
{
if ($("#choose > option:selected").val() === "1")
{
wizard.steps("remove", 1);
// In this case you could also use add instead of insert
wizard.steps("insert", 1, {
title: "Result 2",
contentMode: "async",
contentUrl: "/rest/service/1"
});
}
}
return true;
}
});
});
</script>
Die andere Lösung ist von melc bereits beschrieben.
Danke euch beiden.Ich bevorzuge mehr Kontrolle, also habe ich eine Lösung implementiert, wie sie Melc vorgeschlagen hat. In meinem onStepChanging-Ereignis rufe ich eine Funktion auf, um einen Ajax-Aufruf durchzuführen, und sendet den aktuellen Index/Titel an das Backend. Die Backends antworten mit dem entsprechenden Inhalt. In der Zwischenzeit wird dem Benutzer der nächste (leere) Schritt mit einer Lade-Animation angezeigt. Der letzte Schritt besteht darin, den Inhalt des "neuen" leeren Schritts festzulegen. Was ist der effektivste Weg, den Kontext dieses Schrittes festzulegen? Die IDs der DIVs werden dynamisch generiert, daher kann ich sie nicht auswählen. PS Kann ich nur 1 Antwort geben? – user2779014