动态模型操纵 [英] Dynamic model manipulation

查看:133
本文介绍了动态模型操纵的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Googling的最佳做法关于模型操纵,显然,在4.x,你有这个功能( setField ,例如 here )。

I was Googling around for best practices regarding model manipulation, and apparently, in 4.x, you had this function (setField, example here).

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

But in 6.x, this seems to be gone. I remember reading on the Sencha forums that dynamic models aren't really 'best practices' anyways, so is this why it seems gone in v6 ?

我可以做到原型

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

但这是最好的方式吗?

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

We're going to have grids where users can hide columns so sometimes, model validation will have to change. Also, user defined fields will either by numeric, date, string, etc. depending how what type they chose, so again validations will change dynamically.

谢谢。 >

Thanks.

推荐答案

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

You could try to dynamically define a model and then call 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

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

The only issue here is that you need to have unique name for the dynamic model.

这篇关于动态模型操纵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆