red*_*sky 10 liferay liferay-6 alloy-ui
我正在尝试扩展现有Liferay portlet的一些功能.作为其中的一部分,我想使用Alloy UI来修改portlet中字段的值.有一个预先存在的<aui:script>
块我想定义我的自定义函数.我继续尝试使用A.one('element')
,但我收到错误"A未定义". A.one()
在同一个.jsp文件中的其他位置使用,但不在<aui:script>
块中,并且它按预期运行.
我试过谷歌搜索这个问题无济于事.我尝试过的一个解决方案是在元素块中包含"use"语句,但是当从jsp调用时,这使得该块中的所有函数都未定义.
我所说的"使用"声明是这样的:
<aui:script use="aui-node,aui-base">
// ... script
</aui:script>
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试做的大致概述:
<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>
Run Code Online (Sandbox Code Playgroud)
GKl*_*mov 11
<aui:script>
标签输出
AUI().use(function(A) {
}
Run Code Online (Sandbox Code Playgroud)
仅当您通过use
属性提供依赖项时.喜欢
<aui:script use="aui-base">
// your code here
</aui:script>
Run Code Online (Sandbox Code Playgroud)
如果你这样做,你就会拥有
<script type="text/javascript">
AUI().use('aui-base', function(A) {
// your code here
}
</script>
Run Code Online (Sandbox Code Playgroud)
结果是.但在这种情况下,您在内部声明的所有函数都不是全局函数.让他们全球通话
Liferay.provide(window, 'functionName', function() {
// function body
});
Run Code Online (Sandbox Code Playgroud)
内 <aui:script/>
也<aui:script use="aui-base"/>
比手动调用更好AUI().use(function(A) {})
如果客户端可以具有IE <= 7,这并不正确地工作AUI().use()
.如果IE 6,7 <aui:script use="aui-base>
将输出AUI().ready('aui-base', function(A) {});
,将在旧浏览器中工作.