...
The following diagram illustrates the form data submission flow:
Creating JS listener class for the Form
When a form or form item action is triggered by the handlers, Canvas executes its corresponding actions registered with the global form listener key CFLR. This provides the freedom to the developer to write their action logic anywhere within their application.
It is best practice to keep the listener class files separated from the other action files. The structure of the JS listener class should be as follows:
Code Block | ||
---|---|---|
| ||
cbxcanvas.ns("namespace idID"); <namespace listenerClassID>.sampleListener = Class(cbxcanvas.Observable, { constructor: function(config) { }, //Inside the following function, listeners related to all form components are registered. this.fm = config.fm; }, registerHandlers: function() { this.fm.registerHandler(CFEC.PRE_INITIALIZE, function(fm) //Form Listener { }); // this.fm.registerHandler('cbxpremodelload'CFEC.POST_FORM_RENDERER, function (fm,) record) { }); //Form Item Listener // this.fm.registerHandler("cbxdateclear", "<FORM_DATEFIELD_ID>"CFEC.PRE_MODEL_LOAD, function (fm, event,record) fieldName, value) { }); } }); CFLR.registerListener("FORM<FORM_IDID>", listenerClass<namespace ID>.sampleListener); // Form Container Action button listener //* CABR.registerHandler('ACTION_BUTTON_ID','CONTAINER_ID', function (config) { }); */ |
Create a listener payments.intertransfer.js as follows:
Code Block | ||
---|---|---|
| ||
cbxcanvas.ns("payments"); payments.paymentForm = Class(cbxcanvas.Observable, { constructor : function (config) { this.fm = config.fm; }, registerHandlers: function() { } }); CFLR.registerListener("PAYMENT_FORM", cbx.form.listenerspayments.paymentForm); CABR.registerHandler('SUBMIT','PAYMENTS_CONTAINER', function (config) { //Form submit action goes here }); CABR.registerHandler('CLOSE','PAYMENTS_CONTAINER', function (config) { CBXFORMCONTAINER.getActiveFormContainer().close(); }); |
...