如何在可实例化的Liferay Portlet中处理全局JS变量?

时间:2012-09-12 13:27:04

标签: javascript liferay liferay-6

Liferay中的portlet可以每页添加一次,也可以每页添加多次,当portlet可以多次添加时,它也称为可实例化的Portlet。

在这样一个可实例化的Portlet中,我需要在一个portlet的范围内使用全局JS变量。目前我在我的jsp文件中有JS代码(丑陋,我知道^^)并在我的变量名中使用portlet命名空间,例如:

var <portlet:namespace/>oldUsedCPUsValue = 0;

但现在我想将所有JS代码放入main.js文件中,我显然无法使用portlet命名空间。我怎么能这样做?一个全局数组和portlet命名空间的关键?

1 个答案:

答案 0 :(得分:0)

Javascript不是我的专长,但我只是把代码放到main.js中(你可以自己命名并且不关心它是否从另一个portlet中重载了相同的代码(这是我的javascript-special-knowledge :我甚至没有检查main.js是否会被包含两次 - 如果你检查它,它甚至可能只被包含一次。

然后从jsp页面调用/初始化它,您可以在其中使用命名空间(如果您要求它们完全是全局的。

另一种方法(如果你不关心实际的命名空间而只需要一个命名空间)是使用AlloyUI(YUI的扩展),命名空间免费提供:

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

  A.foo.bar();

  // the namespace ends here
});