Sencha Architect localstorage无法正常工作

时间:2013-10-03 16:15:28

标签: javascript extjs

我是Sencha Touch / Architect的新手,并试图创建我的第一家商店。我有以下项目设置:

存储

Ext.define('InkStudio.store.MyStore', {
    extend: 'Ext.data.Store',

    requires: [
        'InkStudio.model.activityLog'
    ],

    config: {
        data: {
            entryID: 1,
            name: 'First',
            event: 'First event'
        },
        model: 'InkStudio.model.activityLog',
        storeId: 'MyStore',
        proxy: {
            type: 'localstorage',
            uniqueID: 'entryID'
        }
    }
});

模型

    Ext.define('InkStudio.model.activityLog', {
    extend: 'Ext.data.Model',

    config: {
        identifier: 'uuid',
        fields: [
            {
                name: 'entryID',
                type: 'auto'
            },
            {
                name: 'name',
                type: 'string'
            },
            {
                name: 'event',
                type: 'string'
            }
        ]
    }
});

然后我有一个按钮,下面有一个测试。该按钮正在工作,我收到两条“成功”消息,但是当我查看它时,数据从未实际显示在商店中,或者为其捕获文件。

var store=Ext.getStore('MyStore');
if(store.add({name: "KITTY", event: "Clicked on the register"})){
    console.log("Successfully added");
}else{
    console.log("Failed to add");   
}
if(store.sync()){ 
    console.log("Successfully synced");
}else
{
    console.log("Failed to sync");
}

我错过了其他什么吗?

1 个答案:

答案 0 :(得分:2)

使用data配置仅在您希望视图中包含固定信息时使用。正确的是:

Ext.define('InkStudio.store.MyStore', {
    extend: 'Ext.data.Store',

    requires: [
        'InkStudio.model.activityLog'
    ],

    config: {
        model: 'InkStudio.model.activityLog',
        storeId: 'MyStore',
        proxy: {
            type: 'localstorage',
            id: 'my-store-id'
        }
    }
});

编辑商店方法是异步的,因此您需要使用这些选项来实际查看更改。

var record = Ext.create('InkStudio.model.activityLog');
...
//first we load our store.
store.load({
  callback: function(records, operation, success) {
    console.log('Store loaded...');
    //then we can add records
    store.add(record);
    store.sync({
      success: function(batch, options) {
        console.log("Record saved...");
      },
      failure : function(batch, options) {
        console.log("Error!");
      }
    });
  }
});