我一直在努力寻找,没有多少运气。假设您有一个组件Racing Car
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!');
  }
})在您的应用程序的其他地方,您初始化了4辆赛车:
<racing-car id="car1"></racing-car>
<racing-car id="car2"></racing-car>
<racing-car id="car3"></racing-car>
<racing-car id="car4"></racing-car>这不是静态变量的最好例子,但我希望你能理解。
想象一场比赛,我想一次改变所有赛车实例的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'
     }
  },不是以这种方式,而是以某种方式在racing-car的所有实例中全局地更改该属性。
发布于 2016-12-09 02:19:24
聚合物不能与“全局变量”结合,如果你使用的是字面上的“全局变量”。
<script>var globalVariableReady = true;</script>你可能可以用编程的方式做你想做的事。在四个赛车元素加载后运行的脚本中,调用:
document.querySelectorAll('racing-car').forEach(el => el.ready = true);注意:上面的代码假设ES6兼容可迭代节点列表浏览器。
但是,如果赛车标记位于您定义的更大的自定义元素中,则使用绑定可能是有意义的,在该元素中,您定义了一个名为"globalVariableReady“的属性以使用您的术语。或者在自绑定模板中,在模板元素上设置一次值"globalVariableReady“,然后快速地更新所有四个子元素。
https://stackoverflow.com/questions/41050401
复制相似问题