Próbuję rozszerzyć funkcjonalność istniejącego portletu Liferay. W ramach tego chciałbym użyć interfejsu użytkownika Alloy do modyfikowania wartości pola w portlecie. Istnieje już istniejący blok <aui:script>
, w którym chciałbym zdefiniować moją funkcję niestandardową. Poszedłem do przodu i próbowałem używać A.one('element')
, ale otrzymuję komunikat "A nie jest zdefiniowany". A.one()
jest używany w innym miejscu tego samego pliku .jsp, ale nie w bloku <aui:script>
i działa zgodnie z oczekiwaniami."Nie określono" w ramach <aui:script> blok
Próbowałem Googling ten problem bezskutecznie. Jednym z rozwiązań, które próbowałem, było włączenie instrukcji "use" w bloku elementów, ale spowodowało to, że wszystkie funkcje w tym bloku były niezdefiniowane po wywołaniu z jsp.
Co mam na myśli przez „użytkowania” oświadczenie jest taka:
<aui:script use="aui-node,aui-base">
// ... script
</aui:script>
Oto szorstki zarys tego, co próbuję zrobić:
<aui:script>
function save(){
// This is where I'm getting the 'A is not defined' error.
var titleNode = A.one('input[name=title]');
if (titleNode) {
// do stuff with titleNode
var titleVal = titleNode.val();
var titleSubstr = titleVal.substring(0, titleSubstr.lastIndexOf('/'));
titleNode.val(titleSubstr);
}
// other save-related code here
}
function otherFunction() {
// some other functionality
}
</aui:script>
Nie wiem zbyt wiele o "AUI", ale nadal można "document.getElementsByName (" title ") [0] .value", aby uzyskać wartość elementu –