アクセスの制御
このフレームワークでは、access システム属性を介して、アプリケーション、インターフェース、コンポーネント、属性、イベントへのアクセスを制御できます。access システム属性は、リソースをその名前空間外で使用できるかどうかを示します。
access システム属性は次のタグで使用します。
- aura:application
- aura:interface
- aura:component
- aura:attribute
- aura:event
アクセス値
access システム属性には、次の値を指定できます。
例
次のサンプルコンポーネントにはグローバルアクセス権があります。
アクセス違反
アクセスを許可する access システム属性のないコンポーネントや属性などのリソースにコードがアクセスすると、そのコードは実行されないか、undefined が返されます。また、デバッグモードを有効にした場合は、ブラウザコンソールに警告も表示されます。
アクセス権チェック警告の構造
アクセス違反のあるブラウザ コンソールに表示されるアクセス権チェック警告メッセージのサンプルを次に示します。
警告メッセージには次の 4 つで構成されます。
- コンテキスト (誰がリソースにアクセスしようとしているか)。この例では、undefined です。
- 対象 (アクセスされているリソース)。この例では、markup://docsample:targetComponent です。
- エラーの種類。この例では、not visible です。
- エラーをトリガしたコード。通常はクラスメソッドです。この例では、対象定義 (コンポーネント) にアクセスできなかったことを示す ComponentService.getDef() です。定義には、コンポーネントなどのリソースのメタデータが記述されます。
アクセス権チェック警告の修正
次の 1 つ以上の方法を使用して、アクセス権チェック警告を修正できます。
- 所有するリソースに適切な access システム属性を追記する。
- 使用できないリソースへの参照をコードから削除する。
- アクセスしている属性が存在し、正しいスペルを使用していることを確認する。未定義の属性または非公開属性にアクセスすると、同じアクセス違反がトリガされます。アクセスコンテキストでは属性が存在するか未定義であるかを判断できないため、同じメッセージになります。
- $A.getCallback() を使用して、setTimeout() または setInterval() コールや ES6 Promise の場合のように通常の表示ライフサイクル外のコンポーネントにアクセスするコードをラップする。$A.getCallback() では、現在の実行コンテキストが保持され、非同期コードに正しいアクセスレベルが付与されます。それ以外の場合は、フレームワークでコンテキストが失われ、グローバルリソースへのアクセスのみが許可されます。