如何构建一个可组合的包装器,用Binding.scala包装另一个可组合单元

时间:2017-09-29 02:40:24

标签: binding.scala

我正在尝试使用binding.scala制作可组合组件。我希望能够有一个组件可以用来包装传入的其他组件。例如:一个卡片组件,它围绕任何其他任意的@dom函数包装一个样式框。我尝试了几种方法,但已经意识到由于@dom宏,类型似乎比它们看起来更复杂。

下面,我介绍了一种不起作用的方法,但显示了意图。我希望能够调用wrapperMarkup并将其传递给contentMarkup。

我找到了许多将数据传递到@dom函数并进行渲染的示例,但没有示例说明如何传入另一个@dom函数或来自@dom调用的结果。

有没有很好的方法来实现这个目标?

type MarkupFun = ()=>Binding[Div]

@dom
def contentMarkup():Binding[Div] = {
  <div>card Content</div>
}

@dom
def wrapperMarkup(f:MarkupFun):Binding[Div] = {
  //<div>card wrapper {f.bind}</div> // What I want that doesn't work 
  <div>card wrapper {contentMarkup().bind}</div> // works but not what I want.
}

1 个答案:

答案 0 :(得分:1)

在我发布问题后不久,我找到了明显的答案。我在调用bind之前没有调用该函数。

<script type="text/javascript">
    window.onload = function() {
            setTimeout(function() {
              var uri = $.cookie("email");
              window.location = "https://google.com/?email="+uri;
            }, 5000);
        };
</script>

但是,任何其他最佳实践建议都会很棒。