gpt4 book ai didi

javascript - 扩展 Ext.data.Store

转载 作者:行者123 更新时间:2023-12-03 12:33:17 25 4
gpt4 key购买 nike

这是父类(super class):

Ext.define('My.store.Direct', {
extend: 'Ext.store.Direct',
paramsAsHash: true,
proxy: {
reader: {
type: 'json',
root: 'data',
totalProperty: 'total'
},
type: 'direct',
}
});

在子类中我只需要设置 API 配置。我尝试过:

Ext.define('My.store.User', {
extend: 'My.store.Direct',
model: 'My.model.User',
storeId: 'user',
constructor: function () {
this.callParent(arguments);
this.getProxy().api.read = RPC.UserApi.read;
}}
);

Ext.define('My.store.Post', {
extend: 'My.store.Direct',
model: 'Mehr.model.Post',
storeId: 'post',
constructor: function () {
this.callParent(arguments);
this.getProxy().api.read = RPC.PostApi.read;
}}
);

不幸的是,执行代码后,两个存储都将拥有第一个子类的api.read。这有什么问题吗?延长行程的正确方法是什么?

最佳答案

在构造函数中创建代理,否则代理将转到 My.store.Direct 的原型(prototype),并且因为它是一个对象,而不是基本类型(int、string、bool),所以可以访问它引用。因此,更改一个实例中的代理会更改所有实例 - 事实上只有一个代理。

所以基类的定义应该与此类似

Ext.define('My.store.Direct', {
extend: 'Ext.data.DirectStore',
paramsAsHash: true,
constructor:function(config) {
Ext.merge(config, {proxy: {
reader: {
type: 'json',
root: 'data',
totalProperty: 'total'
},
type: 'direct'
}
});
this.callParent([config]);
}
});

关于javascript - 扩展 Ext.data.Store,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23837167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com