聚合物。 动态添加或删除观察者的方法
有没有一种方法可以在元素初始化的时候添加或删除观察者? 我可以这样定义观察者:
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