聚合物。动态添加或删除观察者的方法

时间:2016-09-22 20:20:04

标签: polymer

有没有办法在元素启动时添加或删除观察者? 我可以这样定义观察者:

observers: ['dataChanged(data.*)']

我可以稍后删除此观察者,还是可以设置此观察者的方式不同于此?

2 个答案:

答案 0 :(得分:4)

您可以通过以下方式动态添加观察者:

this._addObserverEffect("property", observerFunction);

this._addComplexObserverEffect("dataChanged(data.*)");

去除更难,聚合物不提供执行此操作的功能。虽然您可以在_propertyEffects数组中搜索它,但我不推荐它。也许只需检查你的观察者函数是否仍然应该是活动的,如果没有则返回。

答案 1 :(得分:0)

你也许可以这样试试: 使用 notify:true 在元素中配置数据属性,以便您可以使用普通js添加侦听器

var element=document.querySelector("#YOUR-ELE-ID");
element.addEventListener("data-changed", function(e) {
 //triggered when data property changes
});

https://www.polymer-project.org/1.0/docs/devguide/properties#notify

并删除绑定的侦听器,您可以调用removeEventListener

https://developer.mozilla.org/de/docs/Web/API/EventTarget/removeEventListener

示例1 - 普通JS:

document.addEventListener('WebComponentsReady', function(e) {
    var element=document.querySelector("#YOUR-ELE-ID");
    element.addEventListener("data-changed", function(e) {
     //triggered when data property changes
    });
});

示例2 - 在自定义元素中:

//...element definition...
ready: function() {
    var element=document.querySelector("#YOUR-ELE-ID");
    element.addEventListener("data-changed", function(e) {
     //triggered when data property changes
    });
}