新记录保存在存储中,但仅在刷新页面后显示
Posted
技术标签:
【中文标题】新记录保存在存储中,但仅在刷新页面后显示【英文标题】:New records are saved in store, but show only after refresh of page 【发布时间】:2017-10-09 00:42:27 【问题描述】:这是我应该修复的 Sencha 代码,但是我不明白为什么在向商店创建新记录后,它们不会立即显示,而是仅在刷新后显示(?)。以下是相关的代码。
谢谢。
控制器
click: function(button)
var window = button.up('window');
var form = window.down('form#formTemplateWindow');
if(window.action == "add")
if(form.isValid())
var store = this.getDataViewList().getStore();
var zones = new Array();
Ext.each(form.zones, function(value, key)
zones.push(value.data.id);
);
var record = form.getValues();
record.zones = zones;
store.add(record);
store.sync();
button.up('window').close();
型号
Ext.define("web.model.Template",
extend: "Ext.data.Model",
fields: [
'id',
'name',
'layout_id',
name: 'reg_date',
type: 'date',
dateReadFormat: 'Y-m-d H:i:s',
dateWriteFormat: 'Y-m-d H:i:s'
,
name: 'background',
type: 'auto'
,
name: 'color1',
type: 'string'
,
name: 'color2',
type: 'string'
,
name: 'url',
type: 'string'
,
name: 'degree',
type: 'string'
,
name: 'playlists',
type: 'auto'
,
name: 'zones',
type: 'auto'
]
);
商店
Ext.define("web.store.Template",
extend:"Ext.data.Store",
autoSync: true,
autoLoad:false,
model:"web.model.Template",
proxy:
type:"rest",
url:web.util.Config.TEMPLATE_URI,
reader:
type:"json",
root:"result"
,
sorters: [
property: 'Name',
direction: 'ASC'
]
);
【问题讨论】:
尝试在点击功能中使用store.reload()
。
好吧,如果你编写一个可以工作的小提琴,这样我就可以处理它了,因为所有可能的解决方案都不起作用,所以你的代码有问题。
请弹琴。添加到商店的记录应立即显示。我有几十个网格和商店,这就像一个魅力。您必须在商店中做一些未在此处显示的可疑事情(过滤器?)。
record.set('zones',zones);
怎么样? record
是Ext Model,需要使用set方法设置字段值。
【参考方案1】:
服务器必须相应地响应新创建的记录。
【讨论】:
【参考方案2】:使用store.insert(index,record)
方法而不是store.add(record)
。
这会将 Model 实例插入到给定索引处的 Store 并触发 add 事件
store.insert(0,record);
【讨论】:
【参考方案3】:将 autoLoad 属性 false 更改为 true
自动加载:真
【讨论】:
以上是关于新记录保存在存储中,但仅在刷新页面后显示的主要内容,如果未能解决你的问题,请参考以下文章