0

Liferay のポートレットは、ページごとに 1 回またはページごとに複数回追加できます。ポートレットを複数回追加できる場合は、インスタンス化可能なポートレットとも呼ばれます。

このようなインスタンス化可能なポートレットでは、1 つのポートレットのスコープ内にグローバル JS 変数が必要です。現在、私はjspファイルにJSコードを持っており(醜い、私は知っています^^)、変数名にポートレット名前空間を使用しています。

var <portlet:namespace/>oldUsedCPUsValue = 0;

しかし今、私はすべての JS コードをファイルに入れたいと思っていmain.jsます。ここでは明らかにポートレットの名前空間を使用できません。どうすればこれを行うことができますか?グローバル配列とキーとしてポートレットの名前空間?

4

1 に答える 1

0

Javascript は私の専門ではありませんが、コードだけを main.js に入れます (自分で名前空間を指定でき、別のポートレットから同じコードでオーバーロードされても気にしません (私の javascript の特別な知識があります: 私はしませんでした)。 main.js が 2 回インクルードされるかどうかもチェックしません。チェックすると、1 回だけインクルードされる可能性があります。

次に、名前空間を使用できる jsp ページから呼び出し/初期化します (名前空間を完全にグローバルにする必要がある場合)。

もう 1 つの方法 (実際の名前空間を気にせず、名前空間が 1 つだけ必要な場合) は、AlloyUI (YUI の拡張) を使用することです。

AUI().use('node', 'module2', 'foo', function (A) {
  // your code and 'global' variables go here.

  A.foo.bar();

  // the namespace ends here
});
于 2012-09-12T21:54:52.613 に答える