javascript - 动态模型操纵

标签 javascript extjs extjs6 extjs6-classic

我在谷歌上搜索有关模型操作的最佳实践,显然,在 4.x 中,您有这个函数(setField,例如 here )。

但在 6.x 中,这似乎消失了。我记得在 Sencha 论坛上读到动态模型无论如何都不是真正的“最佳实践”,所以这就是它在 v6 中消失的原因吗?

我可以在原型(prototype)上做到

MyModel.prototype.fields.push(Ext.create('Ext.data.field.Field', { ... }));

但是这是最好的方法吗?

我们将拥有用户可以隐藏列的网格,因此有时模型验证必须进行更改。此外,用户定义的字段将由数字、日期、字符串等组成,具体取决于他们选择的类型,因此验证将再次动态更改。

谢谢。

最佳答案

您可以尝试动态定义模型,然后调用store.setModel()

var starkStore = Ext.create('Ext.data.Store', {
    model: Ext.data.Model, // only here to suppress warning
});
var starkModel = Ext.define(Ext.getId(), {
    extend: 'Ext.data.Model',
    fields: ['id', 'first_name', 'last_name']
});

starkStore.setModel(starkModel);
starkStore.getProxy().getReader().setModel(starkModel);

starkStore.loadData([
    { id: 1, first_name: 'Rob', last_name: 'Stark' },
    { id: 2, first_name: 'John', last_name: 'Snow' },
    { id: 3, first_name: 'Rickon', last_name: 'Stark' },
    { id: 4, first_name: 'Bran', last_name: 'Stark' },
]);

jsfiddle 上的示例

这里唯一的问题是您需要为动态模型提供唯一的名称。

关于javascript - 动态模型操纵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33694959/

相关文章:

javascript - 水平滚动容器内的垂直滚动 div

javascript - jQuery 数据表 : Unsorted View

javascript - ExtJS 4.0 行扩展器

css - ExtJS - 如何设置禁用按钮的样式?

javascript - Extjs 显示网格表

javascript - 根据两个整数之间的值返回一个字符串

javascript - 为什么我的调整大小事件没有触发?

android - 无法通过 cordova app loader : addRow is not defined 在 cordova android 上加载 ExtJS

javascript - ExtJS Highcharts 重新制图加载掩码挂起

Extjs 6 responsiveConfig 找不到布局配置项的 setter