新记录保存在存储中,但仅在刷新页面后显示

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

自动加载:真

【讨论】:

以上是关于新记录保存在存储中,但仅在刷新页面后显示的主要内容,如果未能解决你的问题,请参考以下文章

用JS怎么实现刷新页面后保留刷新前的页面上的数据显示

jQuery Mobile 弹出页面导航后不显示,仅在硬刷新或返回同一页面后显示

错误:发送后无法设置标题,仅在刷新页面后发生

Rails 页面仅在刷新后应用

Vuex 刷新页面后数据就消失了,怎么保存数据持久化?

NG2-Charts 仅在刷新页面后显示