2012-09-12 68 views
0

Liferay中的portlet可以每頁添加一次,也可以每頁添加多次,當portlet可以添加多次時,它也被稱爲可實例化的Portlet。如何在一個實例化的Liferay Portlet中處理全局JS變量?

在這樣一個可實例化的Portlet中,我需要一個portlet範圍內的全局JS變量。目前,我在我的JSP文件(醜,我知道^^)的JS代碼,並在我的變量名使用portlet的命名空間,如:

var <portlet:namespace/>oldUsedCPUsValue = 0; 

但現在我希望把我所有的JS代碼到main.js文件,我明顯無法使用portlet命名空間。我怎麼能這樣做?全局數組和關鍵的portlet命名空間?

回答

0

JavaScript是不是我的專業,但我只是把代碼放到main.js(你可以命名空間自己並不在乎,如果它得到從另一個Portlet相同的代碼(有我的JavaScript的special-超載知識:我甚至沒有檢查main.js是否包含兩次 - 如果你檢查它可能只包含一次。

然後從jsp頁面調用/初始化它,你可以使用namespacing(if你有他們要求完全全球性

另一種方法(如果你不關心實際的命名空間,只需要一個命名空間)是使用AlloyUI(YUI的擴展),命名空間來免費與th ese:

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

    A.foo.bar(); 

    // the namespace ends here 
});