2016-06-25 11 views
0

AEMと純正フロントエンド(html、css、js)の新機能ですので、このような基本的な質問にお詫び申し上げます。私は2つのコンポーネントを親と子にしました。これらのコンポーネントのそれぞれには、ダイアログで設定するnameプロパティがあります。私のページがこのように見える子コンポーネント内の親の名前のプロパティにアクセスできるようにする必要があります。AEM - 子コンポーネントのダイアログ内で親コンポーネントdilalogのプロパティを取得します。

親コンポーネント
--parentParsys
----子コンポーネント
------ childParsys

私はちょうどお子様のダイアログで、両親の名前を表示する必要があるが、私はできないようです親の名前を見つける。

ご指摘いただければ幸いです。理想的には私はJSでこれをやりたいのですが、私はJSPの周りを自由に選ぶことができます。ダイアログの負荷、それはあなたのJavaScriptが実行されるように

おかげ

+0

あなたは2つの異なる質問があります。子のダイアログに親の名前を表示しますか?それはJavaScriptを使用します。または、レンダリングされたHTMLに親の名前を表示したいですか?それはJSPを使用します。 – nateyolles

答えて

2

は、あなたの子コンポーネントのダイアログにリスナーを接続します。そのJavaScriptは、子コンポーネントのパスに基づいて親コンポーネントのパスを決定します。 Apache SlingのRESTfulな性質を利用して、コンポーネントのResourceの親にGETリクエストを行うだけで、そのリソースのプロパティが返されます。現在開いているダイアログを必要な値で更新することができます。必要な情報はすべてCQ Widgets API documentationにあります。

<instructions 
    jcr:primaryType="cq:Widget" 
    fieldLabel="Instructions" 
    xtype="displayfield"> 
    <listeners 
     jcr:primaryType="nt:unstructured" 
     loadcontent="function(field, record, path){ mynamespace.updateWithParentName(field, record, path) }" 
    /> 
</instructions> 

オーサリングモードで使用できるClientLibにカスタムJavaScriptを追加します。

は、外部のJavaScriptファイルを指して、あなたの子ダイアログにリスナーを接続します。それはcq.authoring.editorとなります。Using Client-Side Librariesを参照してください。これは、ダイアログが開くたびに実行されます。この例では、同期GET要求を行い、displayfieldを更新します。データの内容、親コンポーネントの検索方法、ヌルチェックを追加する必要があるかどうかに応じて更新します。

var mynamespace = {}; 

mynamespace.updateWithParentName = function(field, record, path) { 
    var parentPath = getParentPath(path); 
    var parentComponent = CQ.shared.HTTP.eval(CQ.shared.HTTP.noCaching(parentPath + '.json')); 
    var parentName = parentComponent.name; // assuming the property name is "name" 

    field.setValue('Parent component name is: ' + parentName); 

    /* Go up two levels accounting for the current component and the parsys */ 
    function getParentPath(path) { 
    var parts = path.split('/'); 
    var parentPath = parts.slice(0, parts.length - 2).join('/'); 

    return parentPath; 
    } 
} 
+0

これはすばらしい、多くのおかげです。 – John76

+0

@ John76私は助けることができてうれしいです。あなたが答えを見つけた場合は、upv​​otingと答えを正しいとマークしてください。 – nateyolles

関連する問題