在同步存储中模型ID的自动更新

时间:2014-08-07 07:26:40

标签: extjs

我正在创建一个新的模型实例:

component.record = Ext.create('MyApp.model.HolidayModel',{id:0});
Ext.getStore("HolidayStore").add(component.record);
Ext.getStore("HolidayStore").sync();

id是ExtJS中的默认idProperty,我没有改变它。

在同步期间,以下内容将发送到服务器:

{"id":0,"cls":"blue","country":"Republik Österreich","enddatelist":["15.08.2014", "15.08.2015",…],"name":"Mariä Himmelfahrt","startdatelist":["15.08.2014", "15.08.2015",…],"statelist":[]}

以下内容由服务器回答:

{"success":true,"data":[{"id":30,"name":"Mariä Himmelfahrt","country":"Republik Österreich","startdatelist":["15.08.2014", "15.08.2015",…],"enddatelist":["15.08.2014", "15.08.2015",…],"statelist":[],"cls":"blue"}],"Debug":[],"Message":"","Caption":""}

应告诉ExtJS必须更新已发布模型实例的ID,对吗?

(商店的读者有根:"数据"设置。)

然而,记录仍有id:0 - 所以,如果我

  • 插入第一个模型实例
  • 同步(只有第一个发布到服务器)
  • 插入第二个模型实例
  • 同步(只有第二个发布到服务器)

然后第一个实例不再显示在HolidayStore绑定的网格中。

任何想法为什么?是因为新模型实例不是在数组中发送,而是在数组中返回模型吗?

2 个答案:

答案 0 :(得分:0)

尝试component.record = Ext.create('MyApp.model.HolidayModel',{});

也许ExtJS不会更新已设置的字段。

答案 1 :(得分:0)

我想引用自己的话:

是因为新模型实例不是在数组中发送,而是在数组中返回模型吗?

并补充一点,结果证明这是原因。

我现在总是将它作为数组(allowSingle:false)发送,并且id设置正确。