Links werden bekannterweise mit <a>-Tag angelegt:
<a oid="eintragen">Notiere</a> die Uhrzeit.
Links in IOWA benötigen nur dann ein href-Attribut, wenn sie die
Anwendung verlassen. Wird auf eine Seite innerhalb der Anwendung Bezug
genommen, geschieht dies mit dem oid-Attribut.
Sein Wert legt den Namen der auszuführenden Methode fest:
# gehört zu oid="eintragen" def eintragen @zeiten << Time.now end
Die Initialisierung der Variablen @zeiten wird in einer eigenen Methode
awake vorgenommen, die nur beim ersten Laden der Anwendung aufgerufen wird.
Main.html sollte mittlerweile so aussehen:
<%
class Main < Iowa::Component
attr_reader :zeiten
def awake
@zeiten = []
end
def time
Time.now
end
def eintragen
@zeiten << Time.now
end
end
%>
<html>
<head><title>Hallo</title></head>
<body>
<h1>Hallo Welt!</h1>
<p>Es ist jetzt <b>@time</b>.</p>
<p><a oid="eintragen">Notiere</a> die aktuelle
Uhrzeit.</p>
</body>
</html>
Über den attr_reader :zeiten kann aus dem HTML-Bereich auf den Wert der
zeiten-Variable zugegriffen werden. Um die Liste der Zeiten anzuzeigen,
bietet IOWA die Möglichkeit, einer <ul>-Aufzählung eine Methode
zuzuweisen, mit der die einzelnen Elemente dynamisch erzeugt werden. Das
HTML-Segment sieht folgendermaßen aus:
<ul oid="liste"> <li>@eintrag</li> </ul>
Der
einzelne
<li>-Eintrag ist ein Muster, das für jedes Element der Liste mit den
entsprechend eingesetzten Werten wiederholt wird. Diese Werte werden über
so genannte Bindungen zugeordnet.
<?
liste {
list = zeiten
item = eintrag
}
?>
Dynamische Elemente wie <ul> oder auch <table> verwenden die
Parameter list und item, um auf die zu Grunde liegende Aufzählung
und deren Elemente zuzugreifen. Die Bindung sorgt dafür, dass die im HTML-Bereich
verwendeten Bezeichnung den intern von IOWA verwendeten Bezeichnungen korrekt zugeordnet
werden.
<%
class Main < Iowa::Component
attr_reader :zeiten
attr_accessor :eintrag
def awake
@zeiten = []
end
def time
Time.now
end
def eintragen
@zeiten << Time.now
end
end
%>
<?
liste {
list = zeiten
item = eintrag
}
?>
<html>
<head><title>Hallo</title></head>
<body>
<h1>Hallo Welt!</h1>
<p>Es ist jetzt <b>@time</b>.</p>
<p><a oid="eintragen">Notiere</a> die aktuelle
Uhrzeit.</p>
<p>Die Seite wurde gezeigt um:</p>
<ul oid="liste">
<li>@eintrag</li>
</ul>
</body>
</html>
oid-Attribut.