Ich versuche, einige Funktionen eines vorhandenen Liferay-Portlets zu erweitern. In diesem Zusammenhang möchte ich Alloy UI verwenden, um den Wert eines Feldes im Portlet zu ändern. Es gibt einen bereits vorhandenen Block <aui:script>
, in dem ich meine benutzerdefinierte Funktion definieren möchte. Ich ging voran und versuchte, A.one('element')
zu verwenden, aber ich erhalte den Fehler "A ist nicht definiert." A.one()
wird an anderer Stelle in der gleichen .jsp-Datei verwendet, jedoch nicht in einem <aui:script>
-Block, und es funktioniert wie erwartet.
Ich habe versucht, dieses Problem ohne Erfolg zu googeln. Eine Lösung, die ich ausprobierte, war, die Anweisung "use" in den Elementblock einzufügen, aber dies machte alle Funktionen in diesem Block undefiniert, wenn sie aus dem jsp aufgerufen wurden.
Was ich mit der Anweisung "verwenden" meine, ist dies:
%Vor%Hier ist ein grober Überblick über das, was ich versuche zu tun:
%Vor% <aui:script>
Tag-Ausgaben
nur, wenn Sie Abhängigkeiten über das use
-Attribut bereitstellen. Wie
Wenn Sie dies tun, haben Sie
%Vor%als Ergebnis. In diesem Fall sind jedoch alle Funktionen, die Sie deklarieren, nicht global. Um sie global zu machen, rufen Sie
%Vor% in <aui:script/>
Auch <aui:script use="aui-base"/>
ist besser als man AUI().use(function(A) {})
manuell aufruft, wenn der Client IE & lt; = 7 haben kann, das funktioniert nicht korrekt mit AUI().use()
. Im Fall von IE 6,7% wird co_de% <aui:script use="aui-base>
ausgeben, was in alten Browsern funktioniert.
Der Blogpost hier gibt eine gute Einführung in AUI. Insbesondere der folgende Auszug vom Anfang des Beitrags beantwortet Ihre direkte Frage:
%Vor%