2016-09-22 17 views
7

गतिशील रूप से जोड़ने या निकालने का तरीका तत्व initing के क्षण में पर्यवेक्षक को जोड़ने या निकालने का कोई तरीका नहीं है?पॉलिमर। पर्यवेक्षक

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

मैं बाद में इस पर्यवेक्षक हटा सकते हैं या मुझे लगता है कि तुलना में इस पर्यवेक्षक अलग तरह से सेट कर सकते हैं: मैं पर्यवेक्षक इस तरह से परिभाषित कर सकते हैं?

उत्तर

3

आप आसानी से गतिशील रूप से एक पर्यवेक्षक जोड़ सकते हैं, या तो द्वारा:

this._addObserverEffect("property", observerFunction); 

या

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

हटाने कठिन है और पॉलिमर ऐसा करने के लिए कोई फ़ंक्शन प्रदान नहीं करता है। यद्यपि आप इसे _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

पर कॉल कर सकते हैं

उदाहरण 1 - सादा जे एस:

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 
    }); 
}