2017-11-17 8 views
0

私はサイドバーのように機能する半カスタムリストコンポーネントをAEMに作成しています。現在のページへのリンクかどうかに応じて、リストアイテムにアクティブなクラスを追加したいと思います。私はcurrentPage.titleをhtmlで、currentPage.getTitle()をJSPで参照する方法を知っています。カスタムコンポーネントのjsファイルでcurrentPageのtitleプロパティを参照するにはどうすればよいですか?

コンポーネントの別のclientlibs jsファイルのcurrentPageタイトルプロパティを参照する簡単な方法がありませんか?

すべてのページに、参照するタイトルタグまたは厳密なhtml要素があるわけではないので、私はそのルートを下る前にaemプロパティを使用したいと思います。

+0

私はバックエンドよりもフロントエンドのソリューションを希望しています。これを見てください:https://css-tricks.com/snippets/jquery/add-active-navigation-class-based-on-url /。サーバー側のルートに行きたい場合は、ページパスまたはタイトルを使用しても問題ありません。 –

答えて

1

Clientlibsにはブラウザで実行されるjsコードが含まれているため、currentPageのようなjsp/htl実行中にサーバーでのみ使用できるオブジェクトにはアクセスできません。

これを実現する方法の1つは、HTLのhtml要素の属性にこれらの値を入れ、後でjsにアクセスすることです。

DOM要素の属性の

<div id="titleHolder" data-page-title="${currentPage.title}"> 

sightly-で、それはjs-

var pageTitle = $("#titleHolder").data("page-title"); 

にアクセスするには、また、代わりにJavaScriptオブジェクトでこれらを置くことができます。

関連する問題