使用 AEM 的 Javascript Use-API,如何将函数传递到 HTL 端并使用参数调用它?
Using AEM's Javascript Use-API, how can I pass a function to the HTL side and invoke it with arguments?
在 Adobe AEM 中,假设我有一个 Javascript Use-API 文件,其中回传了以下数据:
文件:secure.js
use( function() {
var pages = ['home', 'about', 'contact'];
return {
pages: pages,
isSecurePage: function(pageName) {
return pages.indexOf(pageName) > -1;
}
});
那么在 HTL 中,我怎样才能开始调用 isSecurePage
方法并将所需的参数传递给它呢?
我试过这个:
文件:home.html
<sly data-sly-use.secure="./secure.js" />
<div class="row" data-sly-list.child="${currentPage.listChildren}">
<sly data-sly-test="${secure.isSecurePage(child.getName)}"> <!-- ERROR! -->
<a href="${child.getPath}.html">${child.getName}</a>
</sly>
</div>
但是我得到这样的错误:
Parsing error in template ...
... extraneous input '(' expecting {'}', '.', '&&', '||', '[', '@'} for expression ${secure.isSecurePage( child.getName ) }
我尝试以不同的方式重写它们以查看是否可以调用该方法,但这里的一切都失败了:
1) secure.isSecurePage @ child.getName
2) secure.isSecurePage @ 'child.getName' )
3) secure.isSecurePage @ 0=child.getName )
虽然下面这些不会导致错误,但它似乎没有正确传递参数:
4) secure.isSecurePage @ first=child.getName )
5) secure.isSecurePage @ pageName=child.getName )
^ keeps returning false
even though it should be true
.
我将尝试找出一种从 Javascript 登录的方法 - API 以进一步调查此问题。
如果有人知道,请帮忙!
谢谢
您不能在 HTL 中调用带参数的方法。唯一允许参数的构造是模板和 Use-objects 实例化。有关详细信息,请查看规范的 data-sly-use
[0] 和 Use-API [1] 部分。
[0] - https://github.com/adobe/htl-spec/blob/1.4/SPECIFICATION.md#221-use
[1] - https://github.com/adobe/htl-spec/blob/1.4/SPECIFICATION.md#4-use-api
在 Adobe AEM 中,假设我有一个 Javascript Use-API 文件,其中回传了以下数据:
文件:secure.js
use( function() {
var pages = ['home', 'about', 'contact'];
return {
pages: pages,
isSecurePage: function(pageName) {
return pages.indexOf(pageName) > -1;
}
});
那么在 HTL 中,我怎样才能开始调用 isSecurePage
方法并将所需的参数传递给它呢?
我试过这个:
文件:home.html
<sly data-sly-use.secure="./secure.js" />
<div class="row" data-sly-list.child="${currentPage.listChildren}">
<sly data-sly-test="${secure.isSecurePage(child.getName)}"> <!-- ERROR! -->
<a href="${child.getPath}.html">${child.getName}</a>
</sly>
</div>
但是我得到这样的错误:
Parsing error in template ...
... extraneous input '(' expecting {'}', '.', '&&', '||', '[', '@'} for expression ${secure.isSecurePage( child.getName ) }
我尝试以不同的方式重写它们以查看是否可以调用该方法,但这里的一切都失败了:
1) secure.isSecurePage @ child.getName
2) secure.isSecurePage @ 'child.getName' )
3) secure.isSecurePage @ 0=child.getName )
虽然下面这些不会导致错误,但它似乎没有正确传递参数:
4) secure.isSecurePage @ first=child.getName )
5) secure.isSecurePage @ pageName=child.getName )
^ keeps returning
false
even though it should betrue
.
我将尝试找出一种从 Javascript 登录的方法 - API 以进一步调查此问题。
如果有人知道,请帮忙!
谢谢
您不能在 HTL 中调用带参数的方法。唯一允许参数的构造是模板和 Use-objects 实例化。有关详细信息,请查看规范的 data-sly-use
[0] 和 Use-API [1] 部分。
[0] - https://github.com/adobe/htl-spec/blob/1.4/SPECIFICATION.md#221-use
[1] - https://github.com/adobe/htl-spec/blob/1.4/SPECIFICATION.md#4-use-api