1. #1
    Sencha User
    Join Date
    Dec 2011
    Posts
    68
    Vote Rating
    1
    Answers
    3
    slngr is on a distinguished road

      0  

    Default Answered: DataView - Question for understanding

    Answered: DataView - Question for understanding


    Hello,

    I have a question about the DataView component in ST. Created it like this:

    Code:
    Ext.define('App.view.HomeDataView', {    extend: 'Ext.DataView',
        xtype: 'home_dataview',
            
        config: {
    
    
            defaults: {
                styleHtmlContent: true
            },
          
            // Store declaration for tile data
            store: 
    			{
    			  fields: ['id', 'name', 'img_url'], 
    			  data: [
    				{id: 'tile1', name: 'Blog', img_url: 'img/thumbnail.png'},
    				{id: 'tile2', name: 'Style Filter', img_url: 'img/thumbnail.png'}
    			  ] 
    			}
    		,
            
    		itemTpl: '<h1>test</h1><h2>{name}</h2>'
        },
    
    
        initialize: function() {
            console.log('>> Home_DATA_VIEW [created]');
    		var data = this.getStore().data.items[0];
    		console.log(data);
            this.callParent();
        },
    });
    Everything works like a charm, but if I comment the following two lines out:

    Code:
    //var data = this.getStore().data.items[0];
    		//console.log(data);
    I get an error like this:

    Code:
    Uncaught TypeError: Object [object Object],[object Object] has no method 'each'
    Why does this happen? Must the DataView initialized? Where should I initialize the DataView in MVC architecture?

    Thank you

  2. it kind of depends on when the store is applied to the dataview. For instance you shouldn't do this:

    Code:
    initialize: function() {
        this.store = Ext.create('Ext.data.Store', {...});
    
        this.callParent(arguments);
    }
    You should use the setStore

    Code:
    initialize: function() {
        this.setStore(Ext.create('Ext.data.Store', {...}));
    
        this.callParent(arguments);
    }

  3. #2
    Sencha - Senior Forum Manager mitchellsimoens's Avatar
    Join Date
    Mar 2007
    Location
    St. Louis, MO
    Posts
    33,599
    Vote Rating
    434
    Answers
    3102
    mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of

      0  

    Default


    Looks like this is because the store hasn't translated the data array into a valid Ext.util.MixedCollection yet. I would caution you that you could be sharing the same store for any instance of that class if you define it like that.
    Mitchell Simoens @SenchaMitch
    Sencha Inc, Senior Forum Manager
    ________________
    http://www.JSONPLint.com - Source to lint your JSONP!

    Check out my GitHub, lots of nice things for Ext JS 4 and Sencha Touch 2
    https://github.com/mitchellsimoens

    Think my support is good? Get more personalized support via a support subscription. https://www.sencha.com/store/

    Need more help with your app? Hire Sencha Services services@sencha.com

    Want to learn Sencha Touch 2? Check out Sencha Touch in Action that is almost in print!

    When posting code, please use BBCode's CODE tags.

  4. #3
    Sencha User
    Join Date
    Dec 2011
    Posts
    68
    Vote Rating
    1
    Answers
    3
    slngr is on a distinguished road

      0  

    Default


    Well is there a better solution or declaration? Sorry my english is not the best and I don't really understand what's wrong here. Want to make a clean DataView in MVC.

    Is my solution the only one possible, or should I change it into another one?

  5. #4
    Sencha - Senior Forum Manager mitchellsimoens's Avatar
    Join Date
    Mar 2007
    Location
    St. Louis, MO
    Posts
    33,599
    Vote Rating
    434
    Answers
    3102
    mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of

      0  

    Default


    You can set the store in initialize
    Mitchell Simoens @SenchaMitch
    Sencha Inc, Senior Forum Manager
    ________________
    http://www.JSONPLint.com - Source to lint your JSONP!

    Check out my GitHub, lots of nice things for Ext JS 4 and Sencha Touch 2
    https://github.com/mitchellsimoens

    Think my support is good? Get more personalized support via a support subscription. https://www.sencha.com/store/

    Need more help with your app? Hire Sencha Services services@sencha.com

    Want to learn Sencha Touch 2? Check out Sencha Touch in Action that is almost in print!

    When posting code, please use BBCode's CODE tags.

  6. #5
    Sencha User
    Join Date
    Dec 2011
    Posts
    68
    Vote Rating
    1
    Answers
    3
    slngr is on a distinguished road

      0  

    Default


    Could you be so kind and give a little code example again? How do I setup the store in the DataView initialize function?

  7. #6
    Sencha - Senior Forum Manager mitchellsimoens's Avatar
    Join Date
    Mar 2007
    Location
    St. Louis, MO
    Posts
    33,599
    Vote Rating
    434
    Answers
    3102
    mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of

      0  

    Default


    it kind of depends on when the store is applied to the dataview. For instance you shouldn't do this:

    Code:
    initialize: function() {
        this.store = Ext.create('Ext.data.Store', {...});
    
        this.callParent(arguments);
    }
    You should use the setStore

    Code:
    initialize: function() {
        this.setStore(Ext.create('Ext.data.Store', {...}));
    
        this.callParent(arguments);
    }
    Mitchell Simoens @SenchaMitch
    Sencha Inc, Senior Forum Manager
    ________________
    http://www.JSONPLint.com - Source to lint your JSONP!

    Check out my GitHub, lots of nice things for Ext JS 4 and Sencha Touch 2
    https://github.com/mitchellsimoens

    Think my support is good? Get more personalized support via a support subscription. https://www.sencha.com/store/

    Need more help with your app? Hire Sencha Services services@sencha.com

    Want to learn Sencha Touch 2? Check out Sencha Touch in Action that is almost in print!

    When posting code, please use BBCode's CODE tags.