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

时间:2017-05-10 11:31:38

标签: extjs model controller store records

这是我应该修复的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'
    }
]

});

3 个答案:

答案 0 :(得分:0)

服务器必须相应地响应新创建的记录。

答案 1 :(得分:0)

使用string result = string.Format("{0}.{1}:{2}:{3}", duration.Days, duration.Hours, duration.Minutes, duration.Seconds) 方法代替store.insert(index,record)。 这会将Model实例插入到给定索引处的Store中,并同时触发add事件

store.add(record)

答案 2 :(得分:0)

将autoLoad属性false更改为true

<强>自动加载:真