Я пытаюсь расширить некоторые функции существующего портлета Liferay. В рамках этого я хотел бы использовать пользовательский интерфейс Alloy для изменения значения поля в портлете. Существует уже существующий блок <aui:script>
, в котором я хотел бы определить свою пользовательскую функцию. Я пошел дальше и попытался использовать A.one('element')
, но получаю сообщение об ошибке «A не определено». A.one()
используется в другом месте в том же файле .jsp, но не в блоке <aui:script>
, и работает так, как ожидалось.
Я пытался погуглить эту проблему, но безрезультатно. Одно из решений, которое я пробовал, заключалось в том, чтобы включить оператор «use» в блок элемента, но это сделало все функции в этом блоке неопределенными при вызове из jsp.
Что я имею в виду под оператором «использовать», так это:
<aui:script use="aui-node,aui-base">
// ... script
</aui:script>
Вот грубый план того, что я пытаюсь сделать:
<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>