Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用store.add(model)时,ExtJS4存储如何知道插入(PUT)或更新(POST)?_Extjs_Extjs4_Extjs4.1_Extjs4.2 - Fatal编程技术网

调用store.add(model)时,ExtJS4存储如何知道插入(PUT)或更新(POST)?

调用store.add(model)时,ExtJS4存储如何知道插入(PUT)或更新(POST)?,extjs,extjs4,extjs4.1,extjs4.2,Extjs,Extjs4,Extjs4.1,Extjs4.2,我打开一个包含表单的窗口,并按如下方式调用代码: var formWindow = Ext.create('widget.recordform'), form = formWindow.down('form').getForm(), model = Ext.create('model.record'); form.loadRecord(model); formWindow.show(); 然后,在save事件中,当我确定这是一条新记录而不是更新时,我调用如下代码:

我打开一个包含表单的窗口,并按如下方式调用代码:

var formWindow = Ext.create('widget.recordform'),   
form = formWindow.down('form').getForm(),       
model = Ext.create('model.record');     
form.loadRecord(model);
formWindow.show();
然后,在save事件中,当我确定这是一条新记录而不是更新时,我调用如下代码:

if (
    var id = store.getTotalCount() + 1;
    record.set("id", id);
    store.add(record);
}
问题是我得到的是通过rest代理生成的PUT(更新),而不是POST(插入)。文档显示Ext不知何故知道记录是新的(可能来自Ext.create?),然后知道将其作为插入


在任何情况下,我得到了一个看跌期权,这意味着我没有获得新的记录。我在这里遗漏了什么?

您要查找的属性是。如果要防止记录成为幻影,则需要在创建记录时将其设置为:

Ext.create('model.record', {
    id: store.getTotalCount() + 1
});
(假设
id
是您的
idProperty
,这是默认设置)


或者,您也可以在设置记录的
idProperty
之后和将其添加到存储之前删除该记录,这也应该将
phantom
标志设置为false。

谢谢matt,我不太确定您的解决方案是否有效。我确实发现,如果我从未设置id属性,则POST会按预期发生。在我的情况下,将其设置为任何值都会导致PUT发生。使用commit似乎没有任何效果。