1

私はモデル操作に関するベスト プラクティスについてグーグルで調べていましたが、どうやら 4.x ではこの機能があったようです ( setField, example here )。

しかし、6.x では、これはなくなったようです。とにかく動的モデルは実際には「ベストプラクティス」ではないことを Sencha フォーラムで読んだことを覚えています。

プロトタイプでできるよ

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

しかし、これが最善の方法ですか?

ユーザーが列を非表示にできるグリッドを用意する予定なので、モデルの検証を変更する必要がある場合があります。また、ユーザー定義フィールドは、選択したタイプに応じて、数値、日付、文字列などのいずれかになるため、検証は動的に変更されます。

ありがとう。

4

1 に答える 1

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 の

ここでの唯一の問題は、動的モデルに一意の名前を付ける必要があることです。

于 2015-11-13T20:12:19.657 に答える