Sencha Touch:用于创建/更新功能的ScriptTagProxy网址

时间:2011-04-11 10:52:04

标签: javascript sencha-touch

我有一个ScriptTagProxy并且我能够接收数据,但现在我想更新一条记录。我已经指定了一个网址但只有一个网址。我是否必须使用此网址处理所有操作(读取,更新,创建,删除)? 如果是:操作如何应用于URL? 如果没有:我如何指定更多网址?

这是我到目前为止的代码:

app.stores.entries = new Ext.data.Store({
    model: "app.models.Entry",
    storeId: 'app.stores.entries',
    proxy: {
        type: 'scripttag',
        url: 'http://myurl.de/getEntries.php',
        extraParams: {
            username: Ext.util.JSON.decode(window.localStorage.getItem('settings')).username,
            password: Ext.util.JSON.decode(window.localStorage.getItem('settings')).password
        },
        reader: {
            type: 'json'
        },
        writer: {
            type: 'json'
        }
    }
});

我在文档中读到,您可以将配置对象传递给模型的保存功能以配置代理。

所以我尝试了以下:

entry.save({
            url: 'http://mysite.com/updateEntry.php',
            extraParams: {
                username: Ext.util.JSON.decode(window.localStorage.getItem('settings')).username,
                password: Ext.util.JSON.decode(window.localStorage.getItem('settings')).password,
                entry: entry
            },}

如您所见,指定了一个网址。 但我仍然得到错误: 未捕获的错误:您正在使用ServerProxy但尚未提供URL。             );

使用AjaxProxy或RestProxy时的行为相同:(

2 个答案:

答案 0 :(得分:0)

赫林,

您问第一段代码:

问题1)“我是否必须使用此网址处理所有操作(读取,更新,创建,删除)?”

答案是肯定的。

问题2)“如果是:行动如何应用于网址?”

根据Sencha源代码,您需要定义actionMethods,如下所示:

myApp.stores.Things = new Ext.data.Store({
model: "Things",    proxy: {
    type: 'ajax',
    actionMethods: {
        create: 'POST',
        read: 'GET',
        update: 'PUT',
        destroy: 'DELETE'
    },
    url: 'jsontest.json',
    reader: {
        type: 'json',
        root: 'things'
    }
},
autoLoad: true

});

如果您删除,创建或编辑您必须致电的记录:

store.sync();

还有一个“autoSave”属性,但它只在编辑时同步,而不是删除。

这将发送已经更改或被删除的内容作为请求有效负载的一部分,您有责任解析json并处理它。

答案 1 :(得分:0)

赫林,

我正在阅读文档here,我在Model类中找到了这个例子:

Ext.regModel('User', {
    fields: ['id', 'name', 'email'],

    proxy: {
        type: 'rest',
        url : '/users'
    }
});

但是上面你没有为app.models.Entry显示你的模型,你试过吗?