sencha touch:加载时更改extraParams

时间:2013-12-26 23:47:39

标签: extjs sencha-touch store

我应该动态地从服务器加载日期,

但是,我不知道如何更改get参数。

这是我的代码。

我想在加载视图时加载存储,但是商店从服务器获取数据

加载应用时我需要根据用户的输入数据更改参数。

[存储]

Ext.define('APP.store.MyTestStore', {
extend: 'Ext.data.Store',
requires: [
    'APP.model.MyModel',
],
config: {
    model: 'APP.model.MyModel',
    autoLoad: false,
    storeId : 'MyTestStore',
    proxy: {
        type: 'jsonp',
        method: 'GET',
        // extraParams: {
        //     man: '',
        // },
        url: 'http://test.com/api/test/',
        reader: {
            type: 'json',
            rootProperty: 'apiList'
        }
    }
},

});

[VIEW]

Ext.define('APP.view.MyListView', {
extend: 'Ext.navigation.View',
xtype: 'applistview',
requires: [
    'Ext.Panel',
    'APP.view.TopMenu',
    'APP.view.TestListView',
    'APP.config.Runtime',
],
fullscreen: true,
config: {
    navigationBar: false,
    fullscreen: true,
    items: [
        {   // Top Menu
            xtype: 'topmenu',
        },
        {   // Main Menu
            xtype: 'tlist',
            itemId: 'myList',
            store: 'MyTestStore',
        },
        {   // Bottom Banner
            xtype: 'bottombanner',
        },
    ]
},
initialize: function(){
    var test = Ext.getStore('MyTestStore').load({extraParams:{man:'test'}});
    console.log(test);
}

});

1 个答案:

答案 0 :(得分:0)

你可以用两种方式做到这一点,

应用默认额外参数设置为123

Ext.define('APP.store.MyTestStore', {
    extend: 'Ext.data.Store',
    requires: [
        'APP.model.MyModel'
    ],
    config: {
        model: 'APP.model.MyModel',
        autoLoad: false,
        storeId : 'MyTestStore',
        proxy: {
            type: 'jsonp',
            method: 'GET',
            extraParams: {
                man: '123'
            },
            url: 'http://test.com/api/test/',
            reader: {
                type: 'json',
                rootProperty: 'apiList'
            }
        }
    }
});

加载商店时,您可以按照以下方式更改额外的参数

initialize: function(){

    var test = Ext.getStore('MyTestStore').getProxy().getExtraParams().man= '567'
    Ext.getStore('MyTestStore').load();
    console.log(test);

}

另一种方法是,您可以在不设置额外参数的情况下更改代理网址

initialize: function(){
       var url = 'http://test.com/api/test/'; // your store proxy url 
       var modified = url+'parameter you get from user'
        Ext.getStore('MyTestStore').getProxy().setUrl(modified);
        Ext.getStore('MyTestStore').load();
        console.log(test);

    }