Liferay中的portlet可以每页添加一次,也可以每页添加多次,当portlet可以多次添加时,它也称为可实例化的Portlet。
在这样一个可实例化的Portlet中,我需要在一个portlet的范围内使用全局JS变量。目前我在我的jsp文件中有JS代码(丑陋,我知道^^)并在我的变量名中使用portlet命名空间,例如:
var <portlet:namespace/>oldUsedCPUsValue = 0;
但现在我想将所有JS代码放入main.js
文件中,我显然无法使用portlet命名空间。我怎么能这样做?一个全局数组和portlet命名空间的关键?
答案 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
});