Polymer 2.0:通知并反映到属性

2024-03-24

我是这个框架的新手,希望看到一些有用且简单的通知和反映属性属性的示例。 请保持示例简单或为您提供的任何代码添加解释。


Notify:

可以设置为 True|False。假设你有parent-element and child-element。工作示例

父元素.html:

<dom-module id="parent-element">
  <template>
    <child-element foo="{{test}}"></child-element>
  </template>

  <script>
    Polymer({
      is: "parent-element",
      properties: {
        test: {
          value: "bar"
        }
      }
    })
  </script>
</dom-module>

如您所见,我们有 1 个属性,名为test它被传播到子元素,我们可以在其中对其进行操作。

子元素.html:

<dom-module id="child-element">
  <template>
    <paper-input value="{{test}}"></paper-input>
  </template>

  <script>
    Polymer({
      is: 'child-element',

      properties: {
        test: {

        }
      },
    });
  </script>
</dom-module>

怎么了?在子元素中我们定义了test属性并且该属性绑定到paper-input,这意味着,每当我们写一些东西paper-input,属性会自动更新。是的,太棒了,我们不需要关心更新里面的属性child-element,但是父母怎么知道这个财产test已经改变?好吧,他不能。

来了notify: true。如果设置了就不用关心通知了parent-element里面的某个地方child-element, test属性已更改。

不久之后,财产test in parent-element and child-element将同步更新

反映到属性:

正如名称所示,当您将其设置为某个属性时,它的值将在宿主元素的属性中可见。最好用一些例子来展示这一点。

In Polymer我们知道,设置某些元素的属性绑定需要$ sign.

<custom-elem foo-attribute$="[[someProperty]]"></custom-elem>

嗯,这不能在任何地方都使用。假设我们需要foo-attribute inside custom-elem.

Becuase foo-attribute被声明为属性而不是属性,它的值在元素内部不可见。所以我们需要一些属性来代表属性和属性。

所以一些实际情况的工作示例如下:

<dom-module id='parent-element'>
  <template>
    <style>
       child-elemet[foo='bar'] {background-color: green}
       child-element[foo='foo'] {background-color: red}
    </style>
    <child-element foo="{{test}}"></child-element>
  </template>

  <script>
    Polymer({
      is: "parent-element",
      properties: {
        test: {
          value: "bar"
        }
      }
    })
  </script>
</dom-module>

在这种情况下,CSS 将不起作用,因为foo是属性(不是属性),CSS 仅应用于属性。

为了让它工作,我们必须添加reflectToAttribute on foo里面的财产child-element.

<dom-module id='child-element'>
  <template>
    <div>[[foo]]</div>
  </template>

  <script>
    Polymer({
      is: "child-element",
      properties: {
        foo: {
          reflectToAttribute: true
        }
      }
    })
  </script>
</dom-module>

在这之后,foo将成为属性,也成为财产。此时CSS将被应用到child-element我们将能够以以下价值开展工作foo inside child-element

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Polymer 2.0:通知并反映到属性 的相关文章

随机推荐