留言板

Javascript: funzione ritorna "undefined" la prima volta che viene chiamata

thumbnail
Marco Rosetti,修改在9 年前。

Javascript: funzione ritorna "undefined" la prima volta che viene chiamata

Junior Member 帖子: 68 加入日期: 13-3-6 最近的帖子
Ciao,
ho un problema con il metodo Liferay.provide lato javascript.
Con il codice riportato sotto, la prima volta che clicco sul pulsante TEST il messaggio che ricevo è "Help: undefined" mentre successivamente ottengo il messaggio corretto "Help: test liferay provide"

Il problema non si presenta se, invece di Liferay.provide, utilizzo la dichiarazione standard di funzioni javascript.

<aui:script use="aui-base">
Liferay.provide(
	window,
	'<portlet:namespace />MYFUNCTION',
	function()
	{
		return 'test liferay provide';
	}
)
</aui:script>

&lt;%
	String command = "javascript: alert('Hellp: '+"+namespace+"MYFUNCTION())";
%&gt;
<aui:button value="TEST" onClick="<%=command %>" />


Cosa sbaglio? Utilizzo male Liferay.provide?

Grazie,

-MR
thumbnail
Daniele Baggio,修改在9 年前。

RE: Javascript: funzione ritorna "undefined" la prima volta che viene chiam

Expert 帖子: 336 加入日期: 08-12-5 最近的帖子
Ciao,

non mi pare che sia usato male.
Tieni conto che l'esecuzione di Liferay.provide è asincrona e viene eseguita dopo il caricamento della pagina.
Fai clic troppo presto?
thumbnail
Marco Rosetti,修改在9 年前。

RE: Javascript: funzione ritorna "undefined" la prima volta che viene chiam

Junior Member 帖子: 68 加入日期: 13-3-6 最近的帖子
Ciao,
ho provato anche ad aspettare un po' (5-10 minuti) ma il problema rimane
thumbnail
Daniele Baggio,修改在9 年前。

RE: Javascript: funzione ritorna "undefined" la prima volta che viene chiam

Expert 帖子: 336 加入日期: 08-12-5 最近的帖子
Dunque, facciamo una prova.
Non hai bisogno di <aui:script use="aui-base"> in questo caso, basta <aui:script>.
Se la tua funzione ha bisogno di moduli devi usare il quaerto parametro di Liferay.provide.
thumbnail
Marco Rosetti,修改在9 年前。

RE: Javascript: funzione ritorna "undefined" la prima volta che viene chiam

Junior Member 帖子: 68 加入日期: 13-3-6 最近的帖子
Stesso problema anche togliendo il parametro "use".
thumbnail
Daniele Baggio,修改在9 年前。

RE: Javascript: funzione ritorna "undefined" la prima volta che viene chiam

Expert 帖子: 336 加入日期: 08-12-5 最近的帖子
Scusa ma solo ora ho capito bene l'uso che fai della funzione!

L'esecuzione delle funzioni fatte con Liferay.provide è asincrona e non ha senso usare il paramentro di ritorno.
La parte corretta del tuo caso è il ritorno di underfined, mentre quando ti torna un valore credo sia un effetto collaterale, un caso.
thumbnail
Marco Rosetti,修改在9 年前。

RE: Javascript: funzione ritorna "undefined" la prima volta che viene chiam

Junior Member 帖子: 68 加入日期: 13-3-6 最近的帖子
Ok ho capito.
Quindi per usare funzioni che ritornano un valore devo per forza dichiararle nel modo "classico" o c'è qualche utilità di Liferay?

Grazie