首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExtJs5 --设置存储的代理

ExtJs5 --设置存储的代理
EN

Stack Overflow用户
提问于 2016-03-28 21:33:11
回答 2查看 1.7K关注 0票数 2

我有一个Store,我试图在构造函数中定义它的代理,如下所示:

代码语言:javascript
复制
Ext.define('App.store.LabStore', {
    extend: 'Ext.data.Store',

    constructor: function(config) {
        var prox = new Ext.data.proxy.Ajax();

        prox.setUrl('http://server:port/app/labs');
        prox.setHeaders({'Content-type': 'application/json'});
        prox.setReader({type: 'json',rootProperty: 'departmentList'});

        this.setProxy(prox);
        this.callParent(arguments);
    },

    autoLoad: false,

    model: 'App.model.Lab'
});

不幸的是,这是行不通的。在我的控制器中,可以工作的是:

代码语言:javascript
复制
var labStore = Ext.create("App.store.LabStore");
var url = 'http://server:port/app/labs';

labStore.getProxy().setUrl(url);

labStore.on('load','checkLabs',this);

labStore.load();

我意识到后一种方法是有效的,也许我应该继续前进,但我确实想弄清楚为什么我不能在构造函数中设置代理,以及/或者我用这种方法做错了什么。

提前感谢!

弗兰克

EN

回答 2

Stack Overflow用户

发布于 2016-04-09 21:52:22

不需要在构造函数中定义代理。您可以在config对象中定义所有属性,如下所示:

代码语言:javascript
复制
//define model
Ext.define('App.model.Lab', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'name',
        type: 'string'
    }, {
        name: 'closed',
        type: 'bool'
    }]
});

//define store
Ext.define('App.store.LabStore', {
    extend: 'Ext.data.Store',
    model: 'App.model.Lab',
    proxy: {
        type: 'ajax',
        url: 'labs.json',
        reader: {
            type: 'json',
            rootProperty: 'departmentList'
        }
    },
    autoLoad: false
});

//initialize store
var store = Ext.create('App.store.LabStore');

// load data from source
store.load();

这里的是一个 fiddle

或者您可以在创建store类时传递代理配置,如下所示:

代码语言:javascript
复制
var store = Ext.create('App.store.LabStore', {
    proxy: {
        type: 'ajax',
        url: 'labs.json',
        reader: {
            type: 'json',
            rootProperty: 'departmentList'
        }
    }
});

但是如果你需要在构造函数中做这件事,你可以:

代码语言:javascript
复制
//define store
Ext.define('App.store.LabStore', {
    extend: 'Ext.data.Store',

    constructor: function(config) {

        config = Ext.applyIf({
            proxy: {
                type: 'ajax',
                url: 'labs.json',
                reader: {
                    type: 'json',
                    rootProperty: 'departmentList'
                }
            }
        }, config);

        this.callParent([config]);
    },
    autoLoad: false
});

这里的是一个 fiddle

票数 1
EN

Stack Overflow用户

发布于 2016-03-29 05:48:06

config参数用于初始化存储区。默认情况下,它包含一个未定义的代理。我可以肯定的是,在调用父构造函数的过程中,它会重置代理。

请尝试将代理设置为config对象。

代码语言:javascript
复制
Ext.define('App.store.LabStore', {
  extend: 'Ext.data.Store',

  constructor: function(config) {
    var prox = new Ext.data.proxy.Ajax();

    prox.setUrl('http://server:port/app/labs');
    prox.setHeaders({'Content-type': 'application/json'});
    prox.setReader({type: 'json',rootProperty: 'departmentList'});

    config.proxy = prox;
    this.callParent(arguments);
  },

  autoLoad: false,

  model: 'App.model.Lab'
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36263464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档