如何隐藏自定义Polymer元素?

时间:2013-12-28 15:26:17

标签: dart dart-polymer

对于实验,我使用https://www.dartlang.org/docs/tutorials/polymer-intro/

中的自定义元素 tute-stopwatch

当我为按钮设置属性'.hidden = true'时,这些按钮会成功隐藏,但元素tute-stopwatch不会隐藏。

  void addChild(Event e, var detail, Node target) {
    ..
    stopButton.hidden = true;
    startButton.hidden = true;
    resetButton.hidden = true;

    this.hidden = true; 
}

当我在tute_stop_watch.html中使用subtemplate时:

<template if="{{ visible }}" id="innerTemplate">

和tute_stop_watch.dart:

  void enteredView() {
    super.enteredView();
    startButton = $['startButton']; // $['startButton'] == null
    innerTemplate =$['innerTemplate'] // find correct, but innerTemplate.childNodes == []

我尝试使用所有能力制作元素tute-stopwatch按需显示。

2 个答案:

答案 0 :(得分:3)

将以下样式添加到聚合物元素中:

<polymer-element name="tute-stopwatch">
  <template>
    <style>
      /* old style for current Dartium */
      @host {
        * {
          display: inline-block;
          position: relative;
          overflow: hidden;
        }

        [hidden], .hidden {
          display: none;
        }
      }

      /* new style for Chromium */
      :host {
        display: inline-block;
        position: relative;
        overflow: hidden;
      }

      :host([hidden]:host, .hidden:host) {
        display: none;
      }
    </style>

    <button>xxx</button>
    ...

  <template>
  <script type="application/dart" src='toute-stopwatch.dart'></script>
</polymer-element>

您可以通过设置hidden属性或添加/删除班级hidden来使元素可见/隐藏。

答案 1 :(得分:1)

您可以隐藏整个模板:

<template>
    <template if="{{ visible }}">
     CONTENT
    </template>
</template>

其中visible@published布尔值。

然后你可能在dart中有一个方法,如:

void hide() {
    visible = false;
}

您可以使用HTML中的点击链接拨打电话。