異常なことはありません。動的な「リンクリスト」インターフェースを作成する際の最も一般的なタスクの1つを実装するだけです。 誤解がないように、2つ以上のExt.form.ComboBox要素を意味します。1つの値を選択すると、2番目の値が読み込まれます。
2つのモデルがあるとします。
Ext.define('User', { extend: 'Ext.data.Model', idProperty: 'id', fields: [ { name: 'id', type: 'int' }, { name: 'login', type: 'string' } ] }); Ext.define('UserGroup', { extend: 'Ext.data.Model', idProperty: 'id', fields: [ { name: 'id', type: 'int' }, { name: 'title', type: 'string' } ] });
したがって、UserGroupモデルは、ユーザーグループのデータ構造と、ユーザー自身のユーザーを記述します。 構造自体は原始的であるため、それらについては詳しく説明しません。 次に、各モデルに基づいて、リポジトリを作成する必要があります。
var userStore = Ext.create('Ext.data.Store', { model: 'User', autoLoad: false, proxy: { type: 'ajax', reader: { type: 'json', root: 'users' } } }); var userGroupStore = Ext.create('Ext.data.Store', { model: 'UserGroup', autoLoad: true, proxy: { type: 'ajax', url: '/groups/', reader: { type: 'json', root: 'groups' } } });
2つのストレージは、以前に定義されたモデルを使用し、サーバーからJSONにデータをロードします。ユーザーのリストはusersブランチに含まれ、groupsブランチのグループのリストに含まれます。 また、ユーザーリポジトリのautoLoadパラメーターがfalseに設定されていることにも注意する必要があります。 これは、選択したグループのIDがまだ定義されておらず、グループIDを送信するときにのみスクリプトがユーザーのリストを返すためです。
次に、両方のリポジトリにExt.form.ComboBox要素を作成する必要があります。
var usersCombobox = Ext.create('Ext.form.ComboBox', { fieldLabel: '', emptyText: ' ', store: userStore, displayField: 'login', valueField: 'id' });
2つの単純な要素を作成し、必要なストレージを指定し、表示される値として使用されるモデルのフィールドと、valueプロパティの値として使用されるフィールドを決定します。 その後、グループ選択イベントハンドラーを配置するだけです。
groupsCombobox.on('select', function () {
複雑なこともありません。次の3つの簡単な手順を実行するだけで済みます。
1.現在のユーザーのリストをクリアします。 すでにグループを選択している場合。
2.選択したグループに基づいて、ユーザーリポジトリのURLを設定または変更します。
3.更新されたリポジトリURLのデータを要求します。
最後に、Ext.form.ComboBox要素をフォームパネルに配置します。
var searchForm = Ext.create('Ext.form.Panel', { title: ' ', items: [groupsCombobox, usersCombobox], });
それは基本的にそれです。