ObservableDirect
| Package: | CQ.Ext |
| Class: | Direct |
| Extends: | CQ.Ext.util.Observable |
| Clientlib: | cq.widgets |
Overview
CQ.Ext.Direct aims to streamline communication between the client and server by providing a single interface that reduces the amount of common code typically required to validate data and handle returned data packets (reading data, error conditions, etc).
The CQ.Ext.direct namespace includes several classes for a closer integration with the server-side. The CQ.Ext.data namespace also includes classes for working with CQ.Ext.data.Stores which are backed by data from an CQ.Ext.Direct method.
Specification
For additional information consult the CQ.Ext.Direct Specification.
Providers
CQ.Ext.Direct uses a provider architecture, where one or more providers are used to transport data to and from the server. There are several providers that exist in the core at the moment:
A provider does not need to be invoked directly, providers are added via CQ.Ext.Direct.add.
Router
CQ.Ext.Direct utilizes a "router" on the server to direct requests from the client to the appropriate server-side method. Because the CQ.Ext.Direct API is completely platform-agnostic, you could completely swap out a Java based server solution and replace it with one that uses C# without changing the client side JavaScript at all.
Server side events
Custom events from the server may be handled by the client by adding listeners, for example:
{"type":"event","name":"message","data":"Successfully polled at: 11:19:30 am"}
// add a handler for a 'message' event sent by the server
CQ.Ext.Direct.on('message', function(e){
out.append(String.format('<p><i>{0}</i></p>', e.data));
out.el.scrollTo('t', 100000, true);
});| Method | Defined By | |
|---|---|---|
addProvider( Object/Array provider ) : void Adds an CQ.Ext.Direct Provider and creates the proxy or stub methods to execute server-side methods.
If the provider ...
Adds an CQ.Ext.Direct Provider and creates the proxy or stub methods to execute server-side methods.
If the provider is not already connected, it will auto-connect.
Parameters:
|
Direct | |
enableBubble( String/Array events ) : void Enables events fired by this Observable to bubble up an owner hierarchy by calling
this.getBubbleTarget() if present....
Enables events fired by this Observable to bubble up an owner hierarchy by calling
This is commonly used by CQ.Ext.Components to bubble events to owner Containers. See CQ.Ext.Component.getBubbleTarget. The default implementation in CQ.Ext.Component returns the Component's immediate owner. But if a known target is required, this can be overridden to access the required target more quickly. Example:
Parameters:
|
Observable | |
getProvider( String id ) : void
|
Direct | |
relayEvents( Object o, Array events ) : void Relays selected events from the specified Observable as if the events were fired by this.
Relays selected events from the specified Observable as if the events were fired by this.
Parameters:
|
Observable | |
| Event | Defined By | |
|---|---|---|
event : ( event e, CQ.Ext.direct.Provider provider ) Fires after an event.
Fires after an event.
Listeners will be called with the following arguments:
|
Direct | |
exception : ( event e ) Fires after an event exception.
Fires after an event exception.
Listeners will be called with the following arguments:
|
Direct | |