I found a problem that Model with direct proxy failed to initialize, especially after app was built. It showed error messages like "Uncaught TypeError: Cannot read property 'directCfg' of null" when the Model try to call proxy.
Because the Model class try to create instance of proxy when the class is defined ( not when the class is instanciated).
The Direct proxy evaluates directFn only when it is set at applyDirectFn. To prevent failure, I extended Ext.data.proxy.Direct class. This class evaluates directFn whenever it is obtained at getDirectFn.
Code:
Ext.define('SevenDays.proxy.DirectWithStringFn', {
extend : 'Ext.data.proxy.Direct',
alias : 'proxy.directWithStringFn',
requires : [ 'Ext.data.proxy.Direct' ],
applyDirectFn : function(directFn) {
//<debug>
if (!Ext.isString(directFn)) {
console.log('directFn must be string.');
}
//</debug>
return directFn;
},
getDirectFn : function() {
var me = this;
var directFn = me.callParent(arguments);
//<debug>
if (!Ext.isString(directFn)) {
console.log('directFn must be string.');
}
//</debug>
return Ext.direct.Manager.parseMethod(directFn);
}
});
I consider that it is better to keep directFn once it is parsed correctly.