动态模型操作

时间:2015-11-13 14:26:59

标签: javascript extjs extjs6 extjs6-classic

我正在谷歌搜索关于模型操作的最佳实践,显然,在4.x中,你有这个功能(setField,例如here)。

但在6.x中,这似乎已经消失了。我记得在Sencha论坛上看到动态模型不是真正的'最佳实践',所以这就是为什么它似乎在v6中消失了?

我可以在原型上做到这一点

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

但这是最好的方法吗?

我们将要有用户可以隐藏列的网格,有时,模型验证将不得不改变。此外,用户定义的字段可以是数字,日期,字符串等,具体取决于他们选择的类型,因此再次验证将动态更改。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以尝试动态定义模型,然后调用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

上的示例

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