有没有办法在元素启动时添加或删除观察者? 我可以这样定义观察者:
observers: ['dataChanged(data.*)']
我可以稍后删除此观察者,还是可以设置此观察者的方式不同于此?
答案 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
});
}