当我在商店中插入值时,Extjs 商店同步不起作用
Extjs store sync is not working when i insert value in store
我有带 widgetColumn 的 treePanel,其中包含带有默认文本的组合框小部件。我的要求是当我 select 默认文本时,应将一条新记录插入商店并保存在数据库中。
{
text: 'TC',
dataIndex: 'scrTC',
xtype: 'widgetcolumn',
widget: {
xtype: 'combo',
store: 'TCStore',
valueField: 'id',
displayField: 'name',
matchFieldWidth: false,
listeners: {
select: 'selectDefault'
}
}
}
控制器方法:
selectDefault: function(combo){
loadData(combo, id, name); //there is a logic to get id & name, then pass it to loadData method
}
loadData: function(combo, id, name){
var store = combo.getStore();
store.insert(0,{id: id, name: name});
store.sync();
combo.setValue(id);
}
问题是当我第一次 select 默认文本时,存储同步方法不是将数据插入数据库,而是组合显示新值并存储新值(使用调试器看到)。
当我再次 select 时,数据被插入到数据库中。
我调试了代码,执行流程是正确的,唯一的问题是同步不是第一次调用后端插入数据,而是第二次工作。
有人可以帮忙吗
商店将使用其代理与您的后端同步数据,因此请确保将其配置为您正在使用的后端类型。商店本身可能配置了代理,或者它可能默认使用其模型上的代理。没有看到商店配置,我不能肯定。
例如,如果您使用的是 REST 后端,则在商店配置的模型上使用 REST 代理:https://docs.sencha.com/extjs/6.6.0/modern/Ext.data.proxy.Rest.html
如果你给插入的记录分配id,同步认为它已经存在于数据库中并且不会触发添加事件(插入的记录不会得到幻像属性)。重命名 id 字段或将模型的 idProperty 设置为其他内容。
我有带 widgetColumn 的 treePanel,其中包含带有默认文本的组合框小部件。我的要求是当我 select 默认文本时,应将一条新记录插入商店并保存在数据库中。
{
text: 'TC',
dataIndex: 'scrTC',
xtype: 'widgetcolumn',
widget: {
xtype: 'combo',
store: 'TCStore',
valueField: 'id',
displayField: 'name',
matchFieldWidth: false,
listeners: {
select: 'selectDefault'
}
}
}
控制器方法:
selectDefault: function(combo){
loadData(combo, id, name); //there is a logic to get id & name, then pass it to loadData method
}
loadData: function(combo, id, name){
var store = combo.getStore();
store.insert(0,{id: id, name: name});
store.sync();
combo.setValue(id);
}
问题是当我第一次 select 默认文本时,存储同步方法不是将数据插入数据库,而是组合显示新值并存储新值(使用调试器看到)。 当我再次 select 时,数据被插入到数据库中。
我调试了代码,执行流程是正确的,唯一的问题是同步不是第一次调用后端插入数据,而是第二次工作。 有人可以帮忙吗
商店将使用其代理与您的后端同步数据,因此请确保将其配置为您正在使用的后端类型。商店本身可能配置了代理,或者它可能默认使用其模型上的代理。没有看到商店配置,我不能肯定。
例如,如果您使用的是 REST 后端,则在商店配置的模型上使用 REST 代理:https://docs.sencha.com/extjs/6.6.0/modern/Ext.data.proxy.Rest.html
如果你给插入的记录分配id,同步认为它已经存在于数据库中并且不会触发添加事件(插入的记录不会得到幻像属性)。重命名 id 字段或将模型的 idProperty 设置为其他内容。