Sencha Touch localstore代理在删除记录后不删除索引

Mic*_*han 15 javascript extjs touch

我在使用Sencha Touch数据存储和localproxy时遇到了一些麻烦.基本上,当使用store.remove(record)方法从存储中删除记录时,记录本身将从内存中删除,但是商店中对它的Id引用不会被删除,所以当页面刷新时,我收到一个可爱的"Uncaught TypeError:无法读取属性'isModel'未定义"

这是商店的代码:

Ext.define("App.store.Data", {
    extend: "Ext.data.Store",
    requires: "Ext.data.proxy.LocalStorage",
    config: {
        model: "App.model.Data",
        autoSync: true,
        proxy: {
            type: 'localstorage',
            id: 'app-store'
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

以下是数据编辑器页面上删除按钮的代码

onDeleteHomeworkCommand: function () {

    var dataEditor = this.getDataEditor();
    var currentData = dataEditor.getRecord();
    var dataStore = Ext.getStore("Data");

    dataStore.remove(currentData);
    dataStore.sync();

    this.activateDataList();
},
Run Code Online (Sandbox Code Playgroud)

编辑:

以下是调用remove方法之前数据存储的屏幕截图: 在此输入图像描述

以下是一个: 在此输入图像描述

请注意,ID仍然保留在商店列表中,这会在刷新页面时给出未定义的错误.

Oli*_*gel 5

问题是当您删除记录时,本地存储代理不会从其内部ID列表中删除ID.如果使用destroy()显式销毁代理中的记录,则可以解决此问题.