Data Persistence
The Cache is a globally accessible object that provides a means to persist data across invocations of a mobile application. The Cache object is a collection of properties, stored as name-values pairs. Properties of the Cache are set and retrieved using dot notation:
Cache.address = "2114 Bigelow Ave";
The Cache is limited by available storage space on the device, so it's important to be judicious in deciding what to cache. Also, caching is on a per moblet basis; that is, each moblet has its own Cache so there are no worries about one moblet overwriting another's cached content.
Preloading and Caching
Mojax can preload images during application startup via the <resource> tag:
<resource url="Images/zillow.gif" persist="true"/>
The persist property is optional in the <resource> tag. However, the advantage of setting persist to true is that once the image is downloaded, it is stored on the device; thus, on startup of the application next time around, the image is available.
HTTP, XML, and XSLT
Given the nature of mobile devices and their ability to communication over the air, many Mojax applications access remote resources. The <httprequest> tag is for content types accessible via HTTP. Listing Four (available online) presents the httprequest for the sample application. The url property is set to match the format for calling the Zillow property details API. The async property is set to true, enabling the request to be completed in the background.
I apply an XSLT filter (Listing Five; available online) to the XML response to tailor the data specifically for the application. A side-effect of using the filter is reducing network traffic to only the information needed, thus improving application performance.
The bulk of the interesting code regarding the HTTP request is inside the <method> tag onLoaded, which is called once the request has completed. The response from the HTTP request is used to create two XPath expressions for accessing the returned XML.
For completeness, it's important to note that Mojax currently supports XML, JSON, images, and Mojax script as the supported data types through an HTTP request.