聚合物静态变量监听器?

时间:2016-12-08 23:06:51

标签: polymer polymer-1.0

我一直试图搜索没有太多运气。假设您有一个组件Dim rng as Range Set rng = Selection Dim firstRow as Integer Dim lastRow as Integer firstRow = rng.Row lastRow = rng.Rows(rng.Rows.Count).Row Dim i as Integer For i = lastRow to firstRow Step -1 Call ActiveSheet.Rows(i).Delete() Next i

Racing Car

在你的应用程序的其他地方,你初始化4辆赛车:

Polymer({
  is: 'racing-car',
  properties: {
     ready: { // this variable is intended to be static
       type: Boolean,
       value: false,
       observer: 'onCarReady'
     }
  },

  onCarReady: function(newVal, oldVal) {
    console.log('time to run!');
  }
})

不是静态变量的最好例子,但我希望你明白这一点。

想象一场比赛,我想立刻改变所有赛车实例的<racing-car id="car1"></racing-car> <racing-car id="car2"></racing-car> <racing-car id="car3"></racing-car> <racing-car id="car4"></racing-car> 属性,但我不知道如何在Polymer中这样做。当然我可以做类似

的事情
ready

但这感觉有点蠢。

是否可以执行以下操作:

<racing-car id="car1" ready="{{globalVariableReady}}"></racing-car>
<racing-car id="car2" ready="{{globalVariableReady}}"></racing-car>
<racing-car id="car3" ready="{{globalVariableReady}}"></racing-car>
<racing-car id="car4" ready="{{globalVariableReady}}"></racing-car>

不是那种方式,而是在 properties: { ready: { // this variable is intended to be static type: Boolean, value: {{globalVariableReady}}, observer: 'onCarReady' } }, 的所有实例中全局更改此属性的某种方式。

3 个答案:

答案 0 :(得分:0)

聚合物不能绑定到&#34;全局变量&#34;如果你使用的字面意思,即

document.querySelectorAll('racing-car').forEach(el => el.ready = true);

您可以通过编程方式执行您想要的操作。在加载了四个赛车元素后运行的某些脚本中,请调用:

{{1}}

注意:上面的代码假定与ES6兼容的浏览器iterable node lists

使用绑定,虽然赛车标签位于您定义的更大的自定义元素中,但您可以定义一个名为&#34; globalVariableReady&#34;的属性。使用你的术语。或者在autobind template内,您可以在其中设置值&#34; globalVariableReady&#34;一旦在模板元素上,它将快速连续更新所有四个子元素。

答案 1 :(得分:0)

你在找这样的东西吗?

&#13;
&#13;
<html>

<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <base href="https://polygit.org/components/">
  <script src="webcomponentsjs/webcomponents-lite.min.js"></script>
  <link rel="import" href="polymer/polymer.html">
</head>

<body>
  <my-element></my-element>
  <my-element></my-element>
  <my-element></my-element>
  <my-element></my-element>
  <div onclick="changeValue()">click me to change value</div>
  <script>
    function changeValue() {
      glob = "new Value";

    }
  </script>
</body>

</html>




<dom-module id="my-element">
  <template>
    <style>
      :host {
        display: block;
      }
    </style>
    click me to check the value
  </template>
</dom-module>
<script>
  var glob = 'initial Value';
  Polymer({
    is: 'my-element',
    listeners: {
      'tap': '_onTap'
    },
    _onTap: function() {
      alert(glob);
    }
  });
</script>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

找到答案。 iron-meta是我正在寻找的。虽然它没有传播数据绑定,所以我使用了akc-meta代替了类似的版本

相关问题