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

有没有一种方法可以在元素初始化的时候添加或删除观察者? 我可以这样定义观察者:

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

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


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

this._addObserverEffect("property", observerFunction);

要么

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

去除更困难,聚合物不提供这样做的功能。 虽然你可以在_propertyEffects数组中搜索它,但我不会推荐它。 也许只是在你的观察者函数中检查它是否仍然有效,如果没有,就返回。


你也许可以尝试这种方式:在元素中使用notify:true配置你的数据属性,这样你就可以添加一个监听器来处理纯j的变化

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
    });
}
链接地址: http://www.djcxy.com/p/36297.html

上一篇: Polymer. Way to dynamically add or remove observer

下一篇: Android Microsoft dynamics CRM adal4j Login Issue