Google Polymer:从元素外部监听属性变化

Posted

技术标签:

【中文标题】Google Polymer:从元素外部监听属性变化【英文标题】:Google Polymer: Listening to property changes from outside the element 【发布时间】:2014-02-14 20:17:31 【问题描述】:

我目前正在使用 Google Polymer 构建控件。我想知道是否可以从元素外部监听属性更改事件。我目前的解决方法是在调用我从其他元素监听的 propertyChanged 方法时触发一个显式事件。

// Property change in child element

Polymer('some-input', 
    valueChanged: function() 
        this.fire('valueChanged', this.value)
    
);

[...]

// Listening in the parent element
ready: function() 
    this.$.someinput.addEventListener('valueChanged', function(evt) 
        var value = evt.detail;
        [...]
    );

你知道我是否可以直接监听属性更改事件吗?

谢谢, 佩德罗

【问题讨论】:

【参考方案1】:

如果您的父元素在 <polymer-element> 内,这是一种简单的“交流”方式 元素之间是在他们的published properties上使用数据绑定:

<parent-element value="val">
  <some-input value="val"></some-input>
</parent-element>

我们认为这是一种“聚合”的做事方式,因为它具有很强的声明性,并利用了数据绑定等功能。

如果父元素不在 Polymer 元素中,您可以使用事件委托 就像你建议的那样。我写了一篇关于共享信息的不同方法的文章 跨越您可能会感兴趣的元素:Communication & Message Passing

【讨论】:

应该在哪里定义属性 val ?每个元素或父元素或突变位置?

以上是关于Google Polymer:从元素外部监听属性变化的主要内容,如果未能解决你的问题,请参考以下文章

从Polymer3到发光元素和材料组件:替代纸和铁皮纸

使用JavaScript从组件外部遍历本地DOM

“Uncaught TypeError:无法使用Polymer 3和polymerfire3读取属性'push'of null”

聚合物、影子 dom、事件和冒泡

Angular Dart 和 Polymer Dart 的区别

Google Polymer 创建菜单树