既存のLiferayポートレットの機能を拡張しようとしています。その一環として、Alloy UIを使用してポートレット内のフィールドの値を変更したいと考えています。既存の<aui:script>
ブロックがあり、ここでカスタム機能を定義したいと考えています。私は先に進み、A.one('element')
を使ってみましたが、 "A is not defined。"というエラーが表示されています。 A.one()
は、同じ.jspファイル内の他の場所で使用されますが、<aui:script>
ブロックにはありませんが、期待どおりに機能します。<aui:script>ブロック内に「Aが定義されていません」
私はこの問題をグーグルでは役に立たなかった。私が試した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>
「AUI」についてよく分かりませんが、「document.getElementsByName( "title")[0] .value "要素値を取得することができます。 –