1

我成功尝试了此处显示的 sencha touch 应用示例

他们使用存储代理类型作为localstorage,它工作得很好,然后我将代理类型更改为 sql,如下所示

Ext.define('notesApp.store.Notes', {
    extend : 'Ext.data.Store',
    requires : 'Ext.data.proxy.Sql',
    config : {
        model : 'notesApp.model.Note',
        proxy : {
            type : 'sql',
            database: "SqlProxyTest",
            table: "Notes",
            id : 'notes-app-store'
        },
        sorters : [{property : 'dateCreated', direction : 'DESC'}],
        grouper : {
            sortProperty : 'dateCreated',
            direction : 'DESC',
            groupFn : function(record) {
                if(record && record.data.dateCreated) {
                    return record.data.dateCreated.toString();
                }
                return '';
            }
        }
    }
});

没有错误。我可以插入数据,我可以在列表视图中看到记录,但 chrome 资源显示“节点表为空”。如果我刷新浏览器,记录就会从列表中消失。

在此处输入图像描述

我错过了什么还是在 sencha touch 中使用 sql 代理的正确方法?

4

2 回答 2

4

如果您更改了模型(添加字段),则必须删除表并重新创建它。当您在数据存储中添加新行时,请务必放置所有字段。

例如,如果我有一个带有名字、姓氏、电子邮件的模型:

// This one is not added cause email is absent
       Ext.getStore('Users').add([{
          firstName: 'Toto',
          lastName: 'test',
       }]);


// This one is added
       Ext.getStore('Users').add([{
          firstName: 'toto',
          lastName: 'test',
          email : 'toto@test.te'
       }]);
于 2013-04-28T18:40:55.483 回答
2

我犯的错误是,我为我试图插入的记录创建了 id,正如他们在演示示例中所示,当我

    Ext.define("NotesApp.model.Note", {
    extend: "Ext.data.Model",
    config: {
        idProperty: 'id',
        fields: [
            { name: 'id', type: 'int' },
            { name: 'dateCreated', type: 'date', dateFormat: 'c' },
            { name: 'title', type: 'string' },
            { name: 'narrative', type: 'string' }
        ]
    }
});

    Ext.define('notesApp.model.Note', {
    extend : 'Ext.data.Model',
    config : {
        fields : [
            { name : 'dateCreated', type : 'string', dateFormat : 'D'},
            { name : 'title', type : 'string'},
            { name : 'narrative', type : 'string'}
        ],

        validations : [
            {type : 'presence', field : 'dateCreated'},
            {type : 'presence', field : 'title', message : 'Please enter a title for the note!'}
        ]
    }
});

一切正常。

于 2013-04-25T08:36:04.990 回答