Liferay &引用;A未定义“A”;内部<;aui:脚本>;块

Liferay &引用;A未定义“A”;内部<;aui:脚本>;块,liferay,liferay-6,alloy-ui,Liferay,Liferay 6,Alloy Ui,我试图扩展现有Liferay portlet的一些功能。作为其中的一部分,我想使用Alloy UI修改portlet中字段的值。有一个预先存在的块,我想在其中定义自定义函数。我继续尝试使用A.one('element'),但收到错误“A未定义”。A.one()在同一个.jsp文件的其他地方使用,但不是在块中,并且它的功能与预期一样 我试过用谷歌搜索这个问题,但没有用。我尝试的一个解决方案是在元素块中包含“use”语句,但这使得从jsp调用该块中的所有函数都未定义 我所说的“使用”声明的意思是:

我试图扩展现有Liferay portlet的一些功能。作为其中的一部分,我想使用Alloy UI修改portlet中字段的值。有一个预先存在的
块,我想在其中定义自定义函数。我继续尝试使用
A.one('element')
,但收到错误“A未定义”。
A.one()
在同一个.jsp文件的其他地方使用,但不是在
块中,并且它的功能与预期一样

我试过用谷歌搜索这个问题,但没有用。我尝试的一个解决方案是在元素块中包含“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>

函数save(){
//这就是我得到“A未定义”错误的地方。
变量titleNode=A.one('input[name=title]');
if(标题节点){
//用titleNode做东西
var titleVal=titleNode.val();
var titleSubstr=titleVal.substring(0,titleSubstr.lastIndexOf('/');
titleNode.val(titleSubstr);
}
//在此处保存其他相关代码
}
函数otherFunction(){
//其他一些功能
}
对AUI进行了很好的介绍。特别是,以下文章开头的摘录回答了您的直接问题:

How do you create a sandbox?

Simple:

AUI().use(function(A) {
   // Your code goes here  
});
标记输出

AUI().use(function(A) {
}
仅当通过
使用
属性提供依赖项时。像

<aui:script use="aui-base">
    // your code here
</aui:script>
内部


另外,
比手动调用
AUI()更好。如果客户端可以使用IE,请使用(函数(A){})
,我对“AUI”不太了解,但您仍然可以“document.getElementsByName(“title”)[0].value”来获取元素值伟大而详细的答案!我还没有测试过这个,但这听起来似乎可以完全解决我的问题。非常感谢!我以为标签为我设置了沙箱。此外,“A”在同一文件的其他地方引用,而不显式调用
AUI()。。。它的工作原理与预期一致。
<script type="text/javascript">
    AUI().use('aui-base', function(A) {
        // your code here
    }
</script>
Liferay.provide(window, 'functionName', function() {
    // function body
});