0

我有一个组件,其中包含一些基于用户编辑的某些值的条件逻辑。在某些情况下,为了让他们更容易,我希望在将子组件嵌入另一个组件时设置一个或多个这些值。像这样的东西(虽然这个错误):

<sly data-sly-resource="${ @path='emailOptIn', resourceType='/apps/br/components/content/custom-forms/form-input' @type='checkbox'}"></sly>

这甚至可能吗?data-sly-use即使我没有应用任何业务逻辑,我是否必须通过 JS 或 Java 来处理它?创建一个单独的模板会更好,而不是在这个模板中加入太多的条件逻辑吗?

提前致谢!

4

2 回答 2

0

我想实现您想要的最简单的方法是通过一个 Sightly 模板,该模板将呈现您的组件现在所做的事情,并为您的参数/apps/br/components/content/custom-forms/form-input添加检查 ( data-sly-test) 。type

<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:不,您不能将参数传递给包含的资源。

于 2015-10-08T16:06:53.567 回答
0

我能够做类似事情的唯一方法是“破解” Sling 选择器,不建议这样做,但如果您基于参数调用组件的不同渲染器而不是 Sling 选择器可能是一个很好的解决方案.....但我还是觉得有点hacky

于 2015-10-08T17:28:54.547 回答