嵌入 Sightly 组件时是否可以直接传递参数?
Is it possible to pass arguments directly when embedding a Sightly component?
我有一个组件,其中包含一些基于用户编辑的某些值的条件逻辑。为了让他们在某些情况下更容易,我希望在将子组件嵌入另一个组件时设置一个或多个这些值。像这样的东西(虽然这会出错):
<sly data-sly-resource="${ @path='emailOptIn', resourceType='/apps/br/components/content/custom-forms/form-input' @type='checkbox'}"></sly>
这可能吗?我是否必须通过 data-sly-use
和 JS 或 Java 来处理它,即使我没有应用任何业务逻辑?创建一个单独的模板,而不是将太多的条件逻辑硬塞进这个模板会更好吗?
提前致谢!
我想实现您想要的效果的最简单方法是通过一个 Sightly 模板,该模板将渲染您的 /apps/br/components/content/custom-forms/form-input
组件现在所做的,并添加 [=] 的检查 (data-sly-test
) 13=] 参数.
<template data-sly-template.form-input="${@ type = 'defines the input type'}">
<div data-sly-test="${type == 'checkbox'}">
...
</div>
</template>
您也可以通过 Use-API 进行处理。 Use-API 不仅仅是为了业务逻辑而构建的;它的目的是清楚地将逻辑与标记分开,无论此逻辑是指处理某些业务对象还是仅决定是否必须根据请求的上下文呈现某些内容。
TL;DR: 不,您不能将参数传递给包含的资源。
我能够做类似事情的唯一方法是 "hack" Sling 选择器,不推荐这样做,但如果您根据参数调用组件的不同渲染器,而不是 Sling 选择器可能是一个很好的解决方案.....但我还是觉得有点hacky
我有一个组件,其中包含一些基于用户编辑的某些值的条件逻辑。为了让他们在某些情况下更容易,我希望在将子组件嵌入另一个组件时设置一个或多个这些值。像这样的东西(虽然这会出错):
<sly data-sly-resource="${ @path='emailOptIn', resourceType='/apps/br/components/content/custom-forms/form-input' @type='checkbox'}"></sly>
这可能吗?我是否必须通过 data-sly-use
和 JS 或 Java 来处理它,即使我没有应用任何业务逻辑?创建一个单独的模板,而不是将太多的条件逻辑硬塞进这个模板会更好吗?
提前致谢!
我想实现您想要的效果的最简单方法是通过一个 Sightly 模板,该模板将渲染您的 /apps/br/components/content/custom-forms/form-input
组件现在所做的,并添加 [=] 的检查 (data-sly-test
) 13=] 参数.
<template data-sly-template.form-input="${@ type = 'defines the input type'}">
<div data-sly-test="${type == 'checkbox'}">
...
</div>
</template>
您也可以通过 Use-API 进行处理。 Use-API 不仅仅是为了业务逻辑而构建的;它的目的是清楚地将逻辑与标记分开,无论此逻辑是指处理某些业务对象还是仅决定是否必须根据请求的上下文呈现某些内容。
TL;DR: 不,您不能将参数传递给包含的资源。
我能够做类似事情的唯一方法是 "hack" Sling 选择器,不推荐这样做,但如果您根据参数调用组件的不同渲染器,而不是 Sling 选择器可能是一个很好的解决方案.....但我还是觉得有点hacky