2016-09-22 11 views
7

要素の初期化時にオブザーバを追加または削除する方法はありますか? 私はオブザーバーをこのように定義することができます。ポリマー。オブザーバを動的に追加または削除する方法

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

は、私はこの後オブザーバを削除できますか私はそれよりも、このオブザーバ異なる方法で設定することができますか?

答えて

3

または

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

除去が難しく、Polymerはこれを行う機能を備えていません。 _propertyEffects配列で検索することはできますが、私はそれをお勧めしません。オブザーバの機能をまだアクティブにする必要があるかどうかチェックし、そうでない場合は返すこともできます。

0

あなたは多分この方法を試すことができます:真を、あなたは無地の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 - カスタム要素で:

this._addObserverEffect("property", observerFunction); 

:あなたは簡単にいずれかの方法で、動的にオブザーバを追加することができます

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