【问题标题】:sencha touch insert data to localstoragesencha touch 将数据插入本地存储
【发布时间】:2012-05-02 09:36:01
【问题描述】:

您好,我发现了很多关于从 sencha 中的数据库加载数据的示例。 我尝试用笔记制作一个列表,第二步我希望能够将笔记添加(保存)到我的数据库中。我在本地存储上尝试。

现在我从 Arraystore 中的数组加载数据。 我应该在哪里设置我的代理? (在商店还是在模型中?)

如何在我的商店中插入数据? 我在我当前的arraystore上尝试过类似的东西,但没有运气: (这是按代码运行的代码):

 MyArrayStore.add({title:"newnote",narrative:"bla bla bla",date:now,id:noteid});
    MyArrayStore.sync();

浏览器控制台出现错误: 未捕获的 ReferenceError:未定义 MyArrayStore 我应该做一个我的商店的实例吗?

我的模型是这样的: 谢谢你的回答。我在建筑师身上试试。 我的模型是这样的:

Ext.define('MyApp.model.NoteModel', {
    extend: 'Ext.data.Model',
    alias: 'model.NoteModel',
    config: {
        fields: [
            {
                name: 'id',
                type: 'int'
            },
            {
                name: 'date',
                type: 'date'
            },
            {
                name: 'title',
                type: 'string'
            },
            {
                name: 'narrative',
                type: 'string'
            }
        ],
        proxy: {
            type: 'localstorage',
            id: 'local'
        }
    }
});

我的商店是这样的:

Ext.define('MyApp.store.MyArrayStore', {
    extend: 'Ext.data.Store',
    requires: [
        'MyApp.model.NoteModel'
    ],

    config: {
        data: [
            {
                title: 'Note 1',
                narrative: 'test1 1'
            },
            {
                title: 'Note 2',
                narrative: 'narrative 2'
            },
            {
                title: '3 ertyyh',
                narrative: 'narrative 3'
            },
            {
                title: '4 asdf',
                narrative: 'narrative 4'
            },
            {
                title: 'Note 5',
                narrative: 'narrative 5'
            },
            {
                title: 'weadf',
                narrative: 'narrative 6'
            }
        ],
        model: 'MyApp.model.NoteModel',
        storeId: 'MyArrayStore'
    }
});

【问题讨论】:

  • 我尝试了类似 stackoverflow.com/questions/6068585/… 的方法,但 .add 仍然无法正常工作
  • 我也在 json 文件上尝试过。我仍然可以加载数据,但是如何使用 jsonWriter 在我的 json 文件中写入数据??

标签: sencha-touch-2 sencha-architect


【解决方案1】:

您应该在模型或商店中设置代理。 以下是如何在您的模型中执行此操作。

Ext.define('MyModel', {

extend: 'Ext.data.Model',

config: {
    fields: ['field1'],
    proxy: {
        type: 'localstorage',
        id  : 'my-model-localstorage-id'
    }
});

您的商店也可以这样做。

之后,鉴于“MyArrayStore”是此类商店的一个实例,您建议的代码应该可以正常工作。

希望这会有所帮助。

【讨论】:

  • 感谢您的回答。我在建筑师身上试试。我将通过插入我的模型和商店来更新我的问题。
  • 我必须创建我的商店的实例吗?我的商店数据已经由我的列表视图加载,所以我假设商店已经创建。我错了吗?
【解决方案2】:

如果您想访问您的商店(您在问题中更新的商店),那么您可以使用:

Ext.StoreManager.get('MyArrayStore')

因此,例如,您想要执行的操作可以通过以下方式完成:

var store=Ext.StoreManager.get('MyArrayStore');
store.add({title:"newnote",narrative:"bla bla bla",date:now,id:noteid});
store.sync();

【讨论】:

  • 感谢成功!所以我必须通过 Storemanager 访问我的商店?
  • 确实如此。至少,我就是这样做的,而且我不知道有其他方法可以访问您的商店。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
相关资源
最近更新 更多