You found a bug! We've classified it as EXTJS-10852 . We encourage you to continue the discussion and to find an acceptable workaround while we work on a permanent fix.
  1. #1
    Sencha Premium Member
    Join Date
    Oct 2012
    Posts
    3
    Vote Rating
    1
    mcm69 is on a distinguished road

      1  

    Default ExtJS 3 compatibility layer breaks creating of implicit models with ExtJS 4.2

    ExtJS 3 compatibility layer breaks creating of implicit models with ExtJS 4.2


    REQUIRED INFORMATION


    Ext version tested:
    • Ext 4.2.1
    • Ext 4.1.0

    Browser versions tested against:
    • Chrome (latest)
    • Internet Explorer 10



    Description:
    When Ext3 compatibility layer is used with ExtJS 4.2, creating of a store with an implicit model is not possible and an exception is thrown. This does not happen when using ExtJS 4.1.

    Steps to reproduce the problem:
    • Create a new store, passing fields into the config.

    The result that was expected:
    • A store with an implicit model is created.

    The result that occurs instead:
    • An exception is thrown:
    • Uncaught TypeError: Cannot read property 'isProxy' of undefined

    Test Case:

    Code:
    Ext.onReady(function(){
        try{
            var store = new Ext.data.Store({fields: []}); 
            alert('store created');
        } catch(e) {
            alert(e);
            throw e;
        }
        
    });


    HELPFUL INFORMATION


    See this URL for live test case: http://jsfiddle.net/dBAXj/1/

  2. #2
    Sencha - Support Team
    Join Date
    Feb 2013
    Location
    California
    Posts
    3,846
    Vote Rating
    68
    Gary Schlosberg is a jewel in the rough Gary Schlosberg is a jewel in the rough Gary Schlosberg is a jewel in the rough

      0  

    Default


    Thanks for the report! I have opened a bug in our bug tracker.

  3. #3
    Sencha User
    Join Date
    Oct 2013
    Posts
    1
    Vote Rating
    0
    maurizio.todaro is on a distinguished road

      0  

    Default


    is there a workaround or a planned solution ?

  4. #4
    Sencha User
    Join Date
    Sep 2012
    Posts
    83
    Vote Rating
    5
    mpost is on a distinguished road

      0  

    Default


    This is also happening if you specifically configure a null proxy ('proxy: null').

  5. #5
    Sencha User
    Join Date
    Jan 2014
    Posts
    1
    Vote Rating
    0
    ChssAddct1 is on a distinguished road

      0  

    Default 'Ext.picker.Time' is a victim of this bug

    'Ext.picker.Time' is a victim of this bug


    in ext-all-debug.js, in the Ext.define of 'Ext.picker.Time', the definition for the createStore function falls prey to this bug, due to the creation of a store passing in fields, rather than a model. Thus, using Ext.form.TimeField is broken, and gives me the exception about isProxy not being a method of undefined.

    I edited my own ext-all-debug.js to use a model for this, rather than an implicit model. But, hopefully there will be a fix for this bug forthcoming.

  6. #6
    Sencha User
    Join Date
    Mar 2009
    Posts
    240
    Vote Rating
    0
    r_honey is on a distinguished road

      0  

    Default


    Here's an override to make TimeField work:

    Code:
        Ext.define('Ext.ux.TimePickerOverrides', {
            override: 'Ext.picker.Time',
    
    
            createStore: function () {
                var me = this,
                            utilDate = Ext.Date,
                            times = [],
                            min = me.absMin,
                            max = me.absMax;
    
    
                while (min <= max) {
                    times.push({
                        disp: utilDate.dateFormat(min, me.format),
                        date: min
                    });
                    min = utilDate.add(min, 'mi', me.increment);
                }
    
    
                var modelDefined = false;
                try {
                    modelDefined = Ext.isDefined(Ext.ux.TimePickerOverridesModel);
                } catch (e) {
                    //Model is not defined.
                    modelDefined = false;
                }
    
    
                if (!modelDefined) {
                    Ext.define('Ext.ux.TimePickerOverridesModel', {
                        extend: 'Ext.data.Model',
                        fields: [
                            { name: 'disp' },
                            { name: 'date' }
                        ]
                    });
                }
    
    
                return new Ext.data.Store({
                    model: 'Ext.ux.TimePickerOverridesModel',
                    data: times,
                    proxy: {
                        type: 'memory',
                        reader: {
                            type: 'json'
                        }
                    }
                });
            }
        });