カスタムコンポーネントの動的選択リストの作成
Lightning アプリケーションビルダーでコンポーネントが設定されるときに、コンポーネントのプロパティを選択リストとして公開できます。選択リストの値は、作成する Apex クラスによって提供されます。
たとえば、カスタムお知らせレコードを表示するホームページのコンポーネントを作成するとします。Apex クラスを使用して、Lightning アプリケーションビルダーのコンポーネントプロパティの選択リストにすべてのお知らせレコードのタイトルを表示できます。これで、システム管理者がホームページにコンポーネントを追加するときに、ページに配置する適切なお知らせを簡単に選択できます。
- 選択リストのデータ取得元として使用するカスタム Apex クラスを作成します。Apex クラスは、VisualEditor.DynamicPickList 抽象クラスを拡張する必要があります。
- カスタム Apex クラスをデータソースとして指定するデザインファイルに属性を追加します。
次に、簡単な例を示します。
Apex クラスの作成
1global class MyCustomPickList extends VisualEditor.DynamicPickList{
2
3 global override VisualEditor.DataRow getDefaultValue(){
4 VisualEditor.DataRow defaultValue = new VisualEditor.DataRow('red', 'RED');
5 return defaultValue;
6 }
7 global override VisualEditor.DynamicPickListRows getValues() {
8 VisualEditor.DataRow value1 = new VisualEditor.DataRow('red', 'RED');
9 VisualEditor.DataRow value2 = new VisualEditor.DataRow('yellow', 'YELLOW');
10 VisualEditor.DynamicPickListRows myValues = new VisualEditor.DynamicPickListRows();
11 myValues.addRow(value1);
12 myValues.addRow(value2);
13 return myValues;
14 }
15}VisualEditor.DynamicPickList 抽象クラスについての詳細は、『Apex 開発者ガイド』を参照してください。
デザインファイルへの Apex クラスの追加
既存のコンポーネントのデータソースとして Apex クラスを指定するには、Apex 名前空間と Apex クラス名で構成される値がある属性にデータソースプロパティを追加します。
1<design:component>
2 <design:attribute name="property1" datasource="apex://MyCustomPickList"/>
3</design:component>動的選択リストのヒントと考慮事項
- VisualEditor.DesignTimePageContext を使用して、コンポーネントが存在するページに関する情報を選択リストに提供できます。
- Apex データソースを public として指定しても、管理パッケージでは考慮されません。Apex クラスが public で、管理パッケージに含まれている場合、登録者組織のカスタムコンポーネントのデータソースとして使用できます。
- Apex クラスがデータソースとして使用されている場合、Apex クラスのプロファイルアクセスは考慮されません。システム管理者のプロファイルに Apex クラスへのアクセス権はないが、カスタムコンポーネントへのアクセス権がある場合、システム管理者の Lightning アプリケーションビルダーには、コンポーネントの Apex クラスによって提供される値が表示されます。