Sencha Touch model.save()并在没有额外负载的情况下进行更新

时间:2013-08-06 22:01:12

标签: extjs sencha-touch sencha-touch-2

我想知道为什么我不能做以下事情:

newChallenge = Ext.create('App.model.User', {name:'donald'});
newChallenge.save();
*** After another user action ***
newChallenge.set('name','george');
newChallenge.save();

我遇到的问题是第二次保存/更新甚至没有触发AJAX补丁/发布到服务器之后的第一个并且没有将名称设置为'george'

我没有看到日志中的任何错误或数据库中的更新。

型号:

Ext.define('App.model.User', {
    extend: 'Ext.data.Model',
    requires: [
        'Ext.data.identifier.Uuid'
    ],
    config: {
        identifier: 'uuid',
        fields: [
            { name: 'id', type: 'auto', persist: false },
            { name: 'name', type: 'string' }

        ]           
        proxy: {
            type: 'rest',
            api: {
                create: App.util.Config.getApiUrl('user_profile'),
                update: App.util.Config.getApiUrl('user_profile'),
                read: App.util.Config.getApiUrl('user_profile')
            },
            reader: {
                type: 'json'
            },
            writer: { 
                type: 'json-custom-writer-extended',
                writeAllFields: true,
                nameProperty: 'mapping'
            }
        }
    }
});

服务器响应(TastyPie):

{
   "name":"george",
   "id":35,
   "resource_uri":"/app/api/1/user/35/",
   "start_date":"2013-08-06T14:49:11.030298"
}

谢谢, 史蒂夫

1 个答案:

答案 0 :(得分:0)

你忘了说出了什么问题,不是吗?你知道,我期待什么,我得到了什么......

无论如何,你的代码被破坏了,因为它依赖于对save()的同步调用(意味着第一个调用将阻塞,直到收到并处理了响应),而实际上并非如此。你应该首先解决这个问题:

newChallenge = Ext.create('App.model.User', {name:'donald'});
newChallenge.save({
    success: function(model) {
        newChallenge.set('name','george');
        newChallenge.save(); // you should handle error here too
    }
    // you should handle error cases too...
});