1. #1
    Sencha User
    Join Date
    Jul 2012
    Location
    Italy
    Posts
    84
    Answers
    1
    Vote Rating
    4
    Tegola is on a distinguished road

      0  

    Default Unanswered: Model with persist: false. Store saves anyway

    Unanswered: Model with persist: false. Store saves anyway


    Hello,
    I've setup a "Tasklist" model, which has many tasks. On initialization, the tasklist counts all overdue tasks and updates a field. Since that field is only needed locally, it is set as persist: false. However, when using this model in a store, the store.sync() method saves it anyway, even if the that field is the only modified field.

    Here's my model:
    Code:
    Ext.define('Tasklist', {
    	extend: 'Ext.data.Model',
    	config: {
    		fields: [
    			{ name: 'id', type: 'int' },
    			{ name: 'overdue-tasks', type: 'int', persist: false }
    		]
    	},
    	
    	init: function() {
    		// Update overdue tasks count
    		var count = 0;
    		var now = new Date();
    		
    		var tasks = this.tasks(); // HasMany association, omitted in this example
    		
    		tasks.each(function(record){
    			var dueDate = record.get('due-date');
    			if (dueDate && dueDate.getTime() < now.getTime()) count++;
    		});
    		
    		this.set('overdue-tasks', count);
    	}
    });
    What I'm doing wrong?

  2. #2
    Sencha - Senior Forum Manager mitchellsimoens's Avatar
    Join Date
    Mar 2007
    Location
    Gainesville, FL
    Posts
    37,327
    Answers
    3540
    Vote Rating
    850
    mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute

      0  

    Default


    With 2.1.0, this code:

    Code:
    Ext.define('MyModel', {
        extend : 'Ext.data.Model',
    
        config : {
            fields : [
                { name : 'foo', persist : false }
            ]
        }
    });
    
    new Ext.data.Store({
        autoLoad  : true,
        model     : 'MyModel',
        proxy     : {
            type : 'ajax',
            url  : 'data/json.json'
        },
        listeners : {
            load : function (store, recs) {
                recs[0].set('foo', 'other');
    
                store.sync();
            }
        }
    });
    it doesn't send the foo field in the sync request.
    Mitchell Simoens @SenchaMitch
    Sencha Inc, Senior Forum Manager
    ________________
    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 in print!

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

Thread Participants: 1

Tags for this Thread