首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与父组件通信

与父组件通信
EN

Stack Overflow用户
提问于 2014-02-08 21:37:16
回答 3查看 1.5K关注 0票数 1

我有MyPage.tml页面和MyComponent.tml组件。

代码语言:javascript
复制
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <body>
        <t:mycomponent />
    </body>
</html>

我需要根据在MyPage中发生的事情在MyComponent上显示一些数据。如何使MyComponent中的一些数据可供MyPage使用?是否存在类似于“反向”参数(子传递参数给父级)的内容?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-09 14:11:25

您的组件可作为变量在您的页面中使用,您可以在其中访问页面中所需的变量,如下所示:

代码语言:javascript
复制
@Component(id = "myComponent")
private MyComponent myComponent;

@SetupRender //or any other render event method
private void setup() {
    Object compVariable = myComponent.getYourVariable();
}

如果您问我,更优雅的做法是使用事件冒泡,因为如果需要,可以更容易地将一些逻辑重构到更深的组件中。

构成部分:

代码语言:javascript
复制
@Inject
private ComponentResources resources;

@SetupRender //or any other lifecycle event method
private void triggerEvent() {
    Object yourVariable = new Object();
    resources.triggerEvent("YOUR_EVENT_NAME", new Object[]{yourVariable}, null);
    //add an event callback if needed where I use null here
}

页面:

代码语言:javascript
复制
@OnEvent(value = "YOUR_EVENT_NAME")
private void handleComponentEvent(Object yourVariable) {
    //do something with yourVariable
    //even return something which would then can be handled by your component callback handler
}
票数 5
EN

Stack Overflow用户

发布于 2014-02-09 07:40:44

您可以使用常规的tapestry参数。

代码语言:javascript
复制
<t:mycomponent value="myValue"/>

如果该值将在组件端更改,则该值将在容器端可用,反之亦然。

票数 1
EN

Stack Overflow用户

发布于 2014-02-09 14:41:25

我使用了所有这三种方法,这取决于上下文。我通常更喜欢事件冒泡,在那里这是有意义的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21652109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档