mortenprom
mortenprom

Reputation: 1

How to override Ext.Date in Sencha Touch

In a Sencha 2.3 installation, I'm trying to override the Ext.Date class to implement localized handling of Norwegian dates. I've created a Ext.ux.Date class and listed it under requires in the app.js file. But my class is never instantiated?

Ext.define('Ext.ux.Date', {
    override: 'Ext.Date',

    requires: ['Ext.ux.Date'],

    constructor: function (config){
        this.callParent(arguments);
    },

    dayNames: [
        'S\u00f8ndag',
        'Mandag',
        'Tirsdag',
        'Onsdag',
        'Torsdag',
        'Fredag',
        'L\u00f8rdag'
    ],

    monthNames : [
        'Januar',
        'Februar',
        'Mars',
        'April',
        'Mai',
        'Juni',
        'Juli',
        'August',
        'September',
        'Oktober',
        'November',
        'Desember'
    ]
 });

When I check the console, there is an error in the method Ext.ClassManager.createOverride(). The error message is: "Uncaught TypeError: Object[object Object] has no method 'override'" in the "overridenClass.override(data);" line...

createOverride: function(className, data, createdFn) {
    var overriddenClassName = data.override,
        requires = Ext.Array.from(data.requires);

    delete data.override;
    delete data.requires;

    this.existCache[className] = true;

    Ext.require(requires, function() {
        // Override the target class right after it's created
        this.onCreated(function() {
            var overridenClass = this.get(overriddenClassName);
            if (overridenClass.singleton) {
                overridenClass.self.override(data);
            }
            else {
                overridenClass.override(data);
            }

            if (createdFn) {
                createdFn.call(overridenClass, overridenClass);
            }
            this.triggerCreated(className);
        }, this, overriddenClassName);
    }, this);

    return this;
}

Upvotes: 0

Views: 1373

Answers (2)

Sourabh86
Sourabh86

Reputation: 744

There is a specific set of steps that you need to follow for creating an override for a class. This article explains the complete process, with and without using Sencha Architect

Upvotes: 0

Martin Hujer
Martin Hujer

Reputation: 168

1) You should not put your classes undex Ext. namespace (use your own namespace)

2) Check the require statement, it may be causing some problems as the class requires itself

3) Try to use just extend instead of override

4) Check the Sencha docs on class system

Upvotes: 1

Related Questions