Sencha Touch:使用Rest Proxy为List加载存储

时间:2012-12-14 23:40:49

标签: javascript extjs sencha-touch-2

我是sencha的新手,所以我确信我在这里只是缺少一些简单的东西。我有一个休息服务,我需要能够为我的列表视图加载我的商店。

这是我的代理模型:

Ext.define('UserModel', {
extend: 'Ext.data.Model',

config: {
    fields: [
        { name: 'UserId', type: 'int' },
        { name: 'FullName', type: 'string' }
    ],

    proxy: {
        type: 'rest',
        url: '/rest/user',
        reader: {
            type: 'json',
            root: 'user'
        }
    }
}
});

此代码适用于GET请求。所以我知道我可以和我的休息服务人员谈谈。

    var User = Ext.ModelMgr.getModel('UserModel');

    User.load(10058, {
        success: function (user) {
            console.log("Loaded user: " + user.get('UserId') + ", FullName: " + user.get('FullName'));
        }
    });

我的问题是,在将代理代码添加到商店时,我无法将数据加载到列表视图中。如何将参数传递给其余服务并加载商店?

Ext.define('UserStore', {
extend: 'Ext.data.Store',

config: {
    model: 'UserModel',
    proxy: {
        type: 'rest',
        url: '/rest/user',
        reader: {
            type: 'json',
            root: 'user'
        },
        autoLoad: true
    },
    sorters: 'FullName',
    grouper: function(record) {
        return record.get('FullName')[0];       
    }
}

});

这是我的列表视图:

Ext.define('UserView', {
extend: 'Ext.List',
xtype: 'userView',

config: {
    scrollable: 'vertical',
    loadingText: "Loading your social connections . . .",
    indexBar: true,
    singleSelect: true,
    grouped: true,
    cls: 'customGroupListHeader',
    itemTpl: '{FullName}',
    store: 'UserStore',
    onItemDisclosure: true
}
});

1 个答案:

答案 0 :(得分:0)

哈哈!我知道这很简单。商店代理中的“autoLoad:true”需要在代理的括号之外。

Ext.define('UserStore', {
extend: 'Ext.data.Store',

   config: {
      model: 'UserModel',
      autoLoad: true,