I have a simple addition for Ext.data.Model
Using:
Code:
var user = new User();
user.setName("Cola");
user.setCompanyTitle("New Company");
console.debug(
user.getName(), // alias for user.get("name") or user.get("Name")
user.getCompanyTitle() // alias for user.get("company_title") or user.get("CompanyTitle")
);
user.save();
Definition:
Code:
Ext.define("Bnx.data.Model", {
extend:"Ext.data.Model",
mixins: {
magicGetSet: 'Bnx.data.MagicGetSet'
},
// magicNameConvert: false,
.......
constructor:function() {
var me = this;
me.callParent(arguments);
me.mixins.magicGetSet.constructor.call(me);
}
.........
});
or
Code:
Ext.define("Bnx.data.MagicGetSet", {
extend:"Ext.data.Model",
// magicNameConvert: false,
.........
});
Class:
Code:
Ext.define("Bnx.data.MagicGetSet", {
magicNameConvert: true,
constructor: function(config) {
var me = this;
me.callParent(arguments);
me.fields.each(function(field) {
var fieldName = field.name;
if(me.magicNameConvert) {
fieldName = me.underlineToCapitalize(fieldName);
}
me["get"+fieldName] = Ext.bind(me.get, me, [fieldName]);
me["set"+fieldName] = function(value) {
me.set(fieldName, value);
};
});
},
underlineToCapitalize: function(str) {
str = str.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
return str.split("_").join("");
}
});