Der Datenspeicher AppStore kann wie jeder andere Datenspeicher, der mit den dojo.data-APIs konform ist, verwendet werden. Er erfordert jedoch für die Schreibfunktionen einen funktionierenden APP-Feed. Die folgende Beispielanwendung demonstriert die Funktionen der Read- und der Identity-API des Datenspeichers AppStore.
Der in diesen Demonstrationen verwendete Feed kann aus diesem Dokumentationspaket aufgerufen werden.
<?xml version='1.0' encoding='utf-8'?> <feed xmlns='http://www.w3.org/2005/Atom' xml:lang='en-US'> <title>Example.com</title> <link rel="alternate" type="text/html" href="http://example.com/" hreflang="en" title="Example.com" /> <subtitle type='text'>Example.com's Sample Feed</subtitle> <rights>Copyright Example.com</rights> <id>http://example.com/samplefeed.xml</id> <updated>2007-08-07T20:00:00-05:00</updated> <link rel="self" type="application/atom+xml" href="http://www.example.com/samplefeed.xml"/> <entry> <title>Test Entry #1</title> <id>http://example.com/samplefeed.xml/entry/1</id> <link rel='alternate' href='http://example.com/1.html'/> <summary type='html'> <p>This is a sample entry in our Atom feed. It is simply a large paragraph in the summary.<p> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim.<p> </summary> <author> <name>Test User</name> <email>test@example.com</email> </author> <updated>2007-08-07T04:00:00-05:00</updated> </entry> <entry> <title>Test Entry #2</title> <id>http://example.com/samplefeed.xml/entry/2</id> <link rel='alternate' href='http://example.com/2.html'/> <summary type='text'> This is a sample entry in our Atom feed. It is simply a large paragraph in the summary. This is straight text. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim. </summary> <author> <email>test@example.com</email> </author> <updated>2007-08-07T06:00:00-05:00</updated> </entry> </feed>
Nun erstellen Sie aus dem Feed deklarativ in Markup eine AppStore-Anwendung am angegebenen URL. Sehen Sie sich dazu den folgenden Code für die Erstellung des Datenspeichers AppStore an:
<div dojoType="ibm_atom.data.AppStore" url="samplefeed.xml" jsId="appStore">
Das Hinzufügen dieser Markup hat jedoch noch keinen Einfluss auf die Seite. Sie müssen die Dojo-Bibliothek aufnehmen und explizit den Parser laden, der die Seite untersucht und Instanzen der Fensterobjekte erstellt. Hierfür wird im Element head ein script-Tag verwendet. Der Code sieht wie folgt aus:
<script type="text/javascript">djConfig = {parseOnLoad: true};</script> <script type="text/javascript" src="../../../dojo/dojo.js"></script> <script> dojo.require("dojo.parser"); dojo.require("ibm_atom.data.AppStore"); </script>
Jetzt wurde der Speicher instanziiert und der Feed geladen. Als Nächstes können ein Fensterobjekt für eine Baumstruktur hinzufügen, das Daten vom AppStore abruft und eine Liste mit Titeln anzeigt, um sich ein Beispiel für die anspruchsvolleren Aufgaben anzusehen, die mit einem Speicher ausgeführt werden können.
<div dojoType="dijit.Tree" id="tree" store="appStore" query="{title:'*t*'}"></div>
Wenn Sie die vorherige Markup untersuchen, sehen Sie, dass das Fensterobjekt für die Baumstruktur (Tree) beim AppStore
Einträge mit dem Titel * (also allen Titeln) abfragt. Im Ergebnis zeigt die Baumstruktur den Titel aller übereinstimmenden Einträge
an.
Untersuchen wir jetzt einige einfache Funktionen des AppStore. Als erstes sollen Elemente aus dem Feed
abgerufen werden. Nehmen wir an, Sie möchten den Eintrag mit dem Titel "Test Entry
#1" abrufen. Hierfür könnten Sie einen Abruf wie den folgenden an den AppStore senden:
<script type="text/javascript"> dojo.addOnLoad(function(){ function callback(items, request){ console.debug(items.length); if(items.length > 0) console.debug(items[0].title); } appStore.fetch({query: {title: "Test Entry #1"}, onComplete: callback}); }); </script>
Nachdem Sie ein Element abgerufen haben, können Sie mehrere Funktionen für das Element aufrufen, um beispielsweise Attribute des Elements abzurufen, um festzustellen, ob das Element ein Element unseres Speichers ist oder um die Identität des Elements zu prüfen. (Im obigen Code wurde auf diese Aufrufe verzichtet, um direkt auf die Elemente des Eintragsobjekts zugreifen zu können.) Sehen Sie sich folgende Beispiele an:
<script type="text/javascript"> dojo.addOnLoad(function() { function callback(items, request){ var item = items[0]; console.debug(appStore.getValue(item, 'summary')); console.debug(appStore.isItem(item)); console.debug(appStore.getIdentity(item)); } appStore.fetch({query: {title: "Test Entry #1"}, onComplete: callback}); }); </script>