我想知道为什么我不能做以下事情:
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"
}
谢谢, 史蒂夫
答案 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...
});