2012-02-13 5 views
7

This question यह दर्शाता है कि अधिभावी एक Ember.View उदाहरण के didInsertElement के बाद देखने के तत्व डोम में है कि आप कुछ कोड निष्पादित करने के लिए अनुमति देता है।Ember.js: मैं प्रत्येक बच्चे के दृश्य के बाद Ember.CollectionView कैसे लगा सकता हूं?

http://jsfiddle.net/gvUux/2/

स्वाभाविक रूप से, आप के बाद प्रत्येक बच्चे दृश्य प्रदान की गई और डाला जाता है एक Ember.CollectionView में जोड़ने के लिए हुक चलेंगे बच्चे दृश्य वर्ग पर didInsertElement अधिभावी। Ember.CollectionView, arrayDidChange और contentDidChange पर

http://jsfiddle.net/BFUvK/1/

दो संग्रह उन्मुख हुक, अंतर्निहित सामग्री बदल गया है के बाद अमल, पर वे अमल से पहले किसी भी प्रतिपादन जगह लेता है। arrayDidChange को सरणी में जोड़े गए प्रत्येक तत्व के लिए निष्पादित किया गया है, और contentDidChange सामग्री बाध्यकारी लपेटता है। अनिवार्य रूप से, पहले और contentBinding चारों ओर फिल्टर के बाद -

मैं प्रतिपादन पाइप लाइन, willInsertCollection और didInsertCollection की तरह कुछ के आसपास हुक करने, पहले और बाद में सभी चाइल्ड तत्व प्रदान कर रहे हैं डोम हेरफेर करने के लिए सक्षम होने के लिए करना चाहते हैं।

कोई भी विचार? मैं उलझन में हूं।

उत्तर

3

यदि आप पहले कुछ करना चाहते हैं और/या दृश्य के बाद कुछ करना चाहते हैं तो आपको क्रमशः willInsertElement और/या didInsertElement का उपयोग करना चाहिए। इस मामले में, चूंकि आप चाहते हैं कि "सभी बाल तत्वों को पहले और बाद में डीओएम में हेरफेर करें" आपको उनको अपने संग्रह दृश्य पर कॉल करना चाहिए।

मुझे यकीन नहीं है कि "contentBinding के आसपास फ़िल्टर के पहले और बाद में" का मतलब क्या है, इसलिए यदि यह स्पष्ट कर सकता है तो यह आपके प्रश्न का उत्तर नहीं देता है, तो मुझे सहायता करने में खुशी होगी।

jsFiddle if needed

+1

आपकी मदद के लिए बहुत धन्यवाद। मैं, डर लग रहा है हालांकि, कि CollectionView 'didInsertElement' हुक' didInsertElement', में से प्रत्येक के लिए जोड़ा बच्चे के संस्करण _before_ निकाल दिया जाता है [यहां पर संशोधित उदाहरण है।] (Http://jsfiddle.net/NFDqW/5/) मैं मुझे लगता है कि मैं एक कामकाज पा सकता हूं, लेकिन मैं अभी भी संग्रह के लिए सही पैटर्न खोजने की कोशिश कर रहा हूं जो मुझे वह चीज़ देता है जो मैं ढूंढ रहा हूं। एक बार फिर धन्यवाद। – scottburton11

+0

आपके द्वारा किए गए संशोधन संग्रह दृश्य के आइटम व्यू में हैं और हां जो प्रत्येक जोड़े गए बच्चे के संस्करण से पहले आग लगेंगे। क्या आप वास्तव में क्या हासिल करने की कोशिश कर रहे हैं इसके बारे में अधिक विशिष्ट हो सकते हैं? –

+0

मैंने [jsfiddle] (http://jsfiddle.net/ud3323/NFDqW/) को ठीक से करने के लिए अद्यतन किया है जो आप आइटमव्यू के बजाय संग्रह दृश्य में बस करने की कोशिश कर रहे थे। –

0

मैं एक सूची को स्लाइड करने के लिए नई वस्तुओं धक्का देने के बाद एक स्क्रॉल एनीमेशन लागू करना चाहते थे। सूची को एक ArrayController और #each सहायक का उपयोग करके प्रस्तुत किया गया था। बस नियंत्रक पर एक ईवेंट ट्रिगर करना जो ऑब्जेक्ट को धक्का देने के बाद सब्सक्राइब किया गया था, वास्तव में सामग्री में किए गए परिवर्तनों से पहले एनीमेशन निष्पादित करने का कारण बन रहा था। निम्नलिखित तकनीक ने मेरे लिए पूरी तरह से काम किया।

//excerpt from my loadMore method on the ArrayController 

var self = this; 
self.content.pushObjects(moreItems); 
Ember.run.scheduleOnce('afterRender', this, function() 
{ 
    self.trigger('loadMoreComplete'); 
}); 
संबंधित मुद्दे