将商店映射到代理

时间:2013-07-24 13:40:54

标签: javascript extjs model proxy store

所以我试图在extjs中配置一个读取'users.json'文件的ajax代理。我正在尝试将我的商店映射到users.json文件。这是我的商店:

Ext.define('AM.store.Users', {
    extend: 'Ext.data.Store',
    model: 'AM.model.User',
    fields: ['name', 'email']
}

这是我的users.json文件:

{
    success: true,
    users: [
        {name: 'Ed Hayes',              email: 'aaa'},
        {name: 'Tommy Gunz', email: 'tommy@sencha.com'},
        {name: 'Clay Banks',    email: 'clay@BoA.com'},
        {name: 'Billy Joe', email: 'billyJgeemail.com'},
        {name: 'James Bond', email: 'goldenGun@HQ.com'}
    ]
}

最后,我的模特:

Ext.define('AM.model.User', {
    extend: 'Ext.data.Model',
    fields: ['name', 'email'],
    proxy: {
        type: 'ajax',
        url : 'data/users.json',
        reader: {
            type: 'json',
            root: 'users'
        }
    }
});

// Uses the User Model's Proxy
Ext.create('Ext.data.Store', {
    model: 'AM.model.User'
});

现在它似乎不起作用。有没有办法做到这一点? (这是我甚至应该做的事吗?)

3 个答案:

答案 0 :(得分:1)

您希望在商店中设置代理,而不是在您的案例中设置模型。另外,我不确定你设置模型的方式是否是这样做的工作方式,这就是我如何设置模型和存储的问题:

Ext.define("AM.store.User", {
    extend: "Ext.data.Model",
    fields: [
        {name:"name",  type:"string"},
        {name:"email", type:"string"}
    ]
});

// Uses the User Model's Proxy
var myStore = Ext.create('Ext.data.Store', {
    model: 'AM.store.User',
    proxy: {
        type: 'ajax',
        url : 'data/users.json',
        reader: {
            type: 'json',
            root: 'users'
        }
    },
    autoLoad: true
});

答案 1 :(得分:0)

  1. 使用model中的store属性,或使用fields属性。不要同时使用它们。

  2. 您不需要json中的success属性(您只需要使用某些extjs形式的操作)

  3. 当您已经宣布自己的商店类型时,为什么要使用模型创建默认商店?

  4. 您可以将proxy放入storemodelstore如果没有model,则会proxy继承{{1}}。

答案 2 :(得分:0)

您想在商店中设置代理 您可以通过此过程映射您的商店。 这里是代码。

Ext.create('Ext.data.Store', {
    model     : 'AM.store.User',
    idProperty: 'id',
    autoLoad  : false,
    autoSync  : true,

    remoteSort: true,
    pageSize  : 10,
    proxy: {
        type    : 'ajax',
        noCache : false,
        limitParam: 'limit',
        startParam: 'start',
        url : 'data/users.json',
        actionMethods: {
            create  : 'POST',
            read    : 'GET',
            update  : 'PUT',
            destroy : 'DELETE'            
        },
        reader: {
            type            : 'json',
            root            : 'data',
            totalProperty   : 'total',
            successProperty : 'success',
            messageProperty : 'message',
            implicitIncludes: true
        },
        simpleSortMode  : true
    },
    sorters: [{
        property: 'id', 
        direction: 'asc'
    }]
});