X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6e39d509471fe9b4e2660e0d1631b350d0c66f40..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/docs/source/DirectLoad.html diff --git a/docs/source/DirectLoad.html b/docs/source/DirectLoad.html new file mode 100644 index 00000000..4faca285 --- /dev/null +++ b/docs/source/DirectLoad.html @@ -0,0 +1,133 @@ +
\ No newline at end of file/** + * @class Ext.form.action.DirectLoad + * @extends Ext.form.action.Load + * <p>Provides {@link Ext.direct.Manager} support for loading form data.</p> + * <p>This example illustrates usage of Ext.direct.Direct to <b>load</b> a form through Ext.Direct.</p> + * <pre><code> +var myFormPanel = new Ext.form.Panel({ + // configs for FormPanel + title: 'Basic Information', + renderTo: document.body, + width: 300, height: 160, + padding: 10, + + // configs apply to child items + defaults: {anchor: '100%'}, + defaultType: 'textfield', + items: [{ + fieldLabel: 'Name', + name: 'name' + },{ + fieldLabel: 'Email', + name: 'email' + },{ + fieldLabel: 'Company', + name: 'company' + }], + + // configs for BasicForm + api: { + // The server-side method to call for load() requests + load: Profile.getBasicInfo, + // The server-side must mark the submit handler as a 'formHandler' + submit: Profile.updateBasicInfo + }, + // specify the order for the passed params + paramOrder: ['uid', 'foo'] +}); + +// load the form +myFormPanel.getForm().load({ + // pass 2 arguments to server side getBasicInfo method (len=2) + params: { + foo: 'bar', + uid: 34 + } +}); + * </code></pre> + * The data packet sent to the server will resemble something like: + * <pre><code> +[ + { + "action":"Profile","method":"getBasicInfo","type":"rpc","tid":2, + "data":[34,"bar"] // note the order of the params + } +] + * </code></pre> + * The form will process a data packet returned by the server that is similar + * to the following format: + * <pre><code> +[ + { + "action":"Profile","method":"getBasicInfo","type":"rpc","tid":2, + "result":{ + "success":true, + "data":{ + "name":"Fred Flintstone", + "company":"Slate Rock and Gravel", + "email":"fred.flintstone@slaterg.com" + } + } + } +] + * </code></pre> + */ +Ext.define('Ext.form.action.DirectLoad', { + extend:'Ext.form.action.Load', + requires: ['Ext.direct.Manager'], + alternateClassName: 'Ext.form.Action.DirectLoad', + alias: 'formaction.directload', + + type: 'directload', + + run: function() { + this.form.api.load.apply(window, this.getArgs()); + }, + + /** + * @private + * Build the arguments to be sent to the Direct call. + * @return Array + */ + getArgs: function() { + var me = this, + args = [], + form = me.form, + paramOrder = form.paramOrder, + params = me.getParams(), + i, len; + + // If a paramOrder was specified, add the params into the argument list in that order. + if (paramOrder) { + for (i = 0, len = paramOrder.length; i < len; i++) { + args.push(params[paramOrder[i]]); + } + } + // If paramsAsHash was specified, add all the params as a single object argument. + else if (form.paramsAsHash) { + args.push(params); + } + + // Add the callback and scope to the end of the arguments list + args.push(me.onSuccess, me); + + return args; + }, + + // Direct actions have already been processed and therefore + // we can directly set the result; Direct Actions do not have + // a this.response property. + processResponse: function(result) { + return (this.result = result); + }, + + onSuccess: function(result, trans) { + if (trans.type == Ext.direct.Manager.self.exceptions.SERVER) { + result = {}; + } + this.callParent([result]); + } +}); + + +