既存の Liferay ポートレットの機能を拡張しようとしています。その一環として、Alloy UI を使用してポートレットのフィールドの値を変更したいと考えています。<aui:script>
カスタム関数を定義したい既存のブロックがあります。先に進んで を使用しようとしA.one('element')
ましたが、「A が定義されていません」というエラーが表示されます。 ブロック A.one()
内ではなく、同じ .jsp ファイル内の別の場所で使用されており、期待どおりに機能します。<aui:script>
この問題をグーグルで試してみましたが、役に立ちませんでした。私が試した解決策の 1 つは、要素ブロックに「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>