如何在代理上使用api属性

时间:2012-04-18 14:56:39

标签: crud sencha-touch-2

我想知道如何在ST2中使用代理的api属性

现在,我在我的代理配置中有这个:

api: {
    create  : App.urls.create_object,
    read    : App.urls.load_object,
    update  : App.urls.update_object,
    destroy : App.urls.destroy_object
}

但是,我不知道如何使用它。 例如,当我想创建一个新对象时,我用这些参数创建了一个Ext.Ajax.request:

url: App.urls.create_object,
params: {
    'object': object
},

但是现在,我怎么能用api属性做同样的事情呢?

你可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

假设您有这样的模型:

Ext.define('User', {
    fields: ['name', 'email'],
    proxy: {
        type: 'ajax',
        api: {
            create: 'my_create_url',
            read: 'my_read_url',
            update: 'my_update_url',
            destroy: 'my_destroy_url'
        }
    }
});

创建

var user = Ext.create('User', {name: 'Ed Spencer', email: 'ed@sencha.com'});

user.save(); // will POST to the create url

<强>更新

var user = Ext.create('User', {name: 'Ed Spencer', email: 'ed@sencha.com'});
user.save({
    success: function(user) {
        user.set('name', 'Robert Dougan');

        user.save(); // will PUT update URL
    }
});

<强>读

使用商店:

var store = Ext.create('Ext.data.Store', {
    model: 'User'
});

store.load(); // will GET to read URL

使用模型:

// will GET the read URL with the specified ID.
User.load(12, {
    success: function(user) {
        console.log(user);
    }
});

<强>破坏

var user = Ext.create('User', {name: 'Ed Spencer', email: 'ed@sencha.com'});
user.save({
    success: function(user) {
        user.destroy(); // will DELETE destroy URL
    }
});

在Sencha文档的Rest代理中有更多相关信息:http://docs.sencha.com/touch/2-0/#!/api/Ext.data.proxy.Rest

同步

您还可以使用商店同步方法批量创建/更新/销毁商店中的所有记录。

var store = Ext.create('Ext.data.Store', {
    model: 'User'
});

store.add({ name: 'Robert Dougan', email: 'rob@sencha.com' });

store.sync(); // will batch update all the needed records