2012-07-07 10 views
6

में एक शो अप एनीमेशन देख सकता हूं यहां एम्बरजे राउटर http://jsbin.com/agameq/edit का उपयोग करके एक उदाहरण दिया गया है। अब जब मैं मार्ग बदल गया, तो मुझे कुछ शोअप एनीमेशन चाहिए, जैसे फीडइन या फीडऑट। मुझे क्या करना चाहिए?क्या मैं एम्बरजेस

+0

[ गिटहब में प्रोजेक्ट] (https://github.com/MilkyWayJoe/ember-router-with-webapi) अपनी खुद की सीखने की प्रक्रिया के रूप में, आप एक नज़र रखना चाहते हैं (यह अभी भी काफी मोटा है लेकिन मैं प्रगति के रूप में अद्यतन कर रहा हूं) – MilkyWayJoe

+0

@MilkyWayJoe ठीक है, मैं ~ धन्यवाद ~ – aisensiy

उत्तर

9

एंबर में हर View एक विधि didInsertElement नामित किया है:

कहा जाता है जब देखने के तत्व डोम में सम्मिलित किया गया है। इस फ़ंक्शन को किसी भी सेट अप करने के लिए ओवरराइड करें जिसके लिए दस्तावेज़ निकाय में कोई तत्व आवश्यक है।

सभी एंबर विचारों भी एक $ जो jQuery के लिए एक संदर्भ है, तो आप इसे के साथ अपने दृश्य में कुछ तत्व लपेट कर में कोई भी परिवर्तन लागू कर सकते हैं यह जैसे:

// this will animate only the tag h2, which in your case is the title of the users view 
App.UsersView = Ember.View.extend({ 
    templateName: 'users', 
    didInsertElement: function() { 
     this.$('h2').animate({ fontSize: "3em" }, 900); 
    } 
}); 

या आप कर सकते हैं बिना तर्क के इसे कॉल करें (जैसे $()) jQuery द्वारा लिपटे वर्तमान दृश्य को वापस करने के लिए।

एक दृश्य चेतन करने के लिए के रूप में आप उस दृश्य/मार्ग में प्रवेश करते हैं, अपने App.UsersView में ऐसा करते हैं:

// this will animate the entire view 
App.UsersView = Ember.View.extend({ 
    templateName: 'users', 
    didInsertElement: function() { 
     this.$().animate({ fontSize: "3em" }, 900); 
    } 
}); 

(नोट: मेरे एनीमेशन सुंदर लंगड़ा है, लेकिन यह सिर्फ दिखाने के लिए जहां कॉल करने के लिए है विधियों, कोई वास्तविक एनीमेशन करते हैं)

यहाँ @MilkyWayJoe से जवाब के बाद your JSBin

+0

धन्यवाद। बहुत ही रोचक। मुझे नहीं पता था कि एम्बर ने कोको-प्रेरित किया था InsertElement। क्या आपका उदाहरण jQuery.animate फ़ंक्शन का उपयोग कर रहा है? मतलब एम्बर से इंटेंर्टमेंट किया गया और फिर इसे यूएक्स सामान के लिए jQuery में पास कर दिया, है ना? – nembleton

+1

@nembleton यह सही है, उस पल में मैं jQuery ['animate'] (http://api.jquery.com/animate/) फ़ंक्शन को कॉल कर रहा हूं, क्योंकि एम्बर पहले से ही इसे अपने विचारों को प्रदान करता है, आपको बस इतना करना है jQuery – MilkyWayJoe

+0

के लिए स्क्रिप्ट संदर्भ है बहुत बहुत धन्यवाद। आपके answser मेरी बड़ी समस्याओं को हल किया। मैं कुछ वेबपैप करने के लिए एम्बरजे का उपयोग करना चाहता हूं और इसके लिए ux वास्तव में महत्वपूर्ण है। लेकिन अभी एनीमेशन jQuery का उपयोग कर रहा है एनीमेशन सीएसएस 3 चाल से बदल सकता है? – aisensiy

5

का एक संशोधित संस्करण है, तो आप शायद inserti से पहले देखें छुपाना चाहते हैं यह एनजी, की स्थापना करके isVisible संपत्ति false रहे हैं:

App.UsersView = Ember.View.extend({ 
    templateName: 'users', 

    isVisible: false, 

    didInsertElement: function() { 
     var self = this; 
     this.$().fadeIn(700, function(){ 
      self.set('isVisible', true); //inform observers of `isVisible` 
     }); 
    } 
}); 

या का उपयोग this animation Mixin है, जो आपको मनाया सीएसएस गुण का एक सेट बदलकर दृश्य चेतन करने के लिए अनुमति देता है: मैं हाल ही में एक जोड़ दिया है

App.UsersView = Ember.View.extend(JQ.Animate, { 
    templateName: 'users', 

    isVisible: false, 

    // Observed CSS properties 
    cssProperties: ['display'], 

    // Optional animation properties 
    duration: 700, 
    easing: 'easeInOutCubic', 

    didInsertElement: function() { 
     this.set('display', 'block'); 
    }, 

    afterAnimate: function() { 
     this.set('isVisible', true); 
    } 
}); 
+0

ओह, यह अच्छा है। मैं लेख पढ़ूंगा और कोशिश करूँगा। स्रोत कोड पढ़कर, आप इस जानकारी को कैसे जान सकते हैं? – aisensiy

+0

स्रोत कोड [यहां] (http://cloud.github.com/downloads/emberjs/ember.js/ember-latest.js) (जो नवीनतम है) में सभी टिप्पणियां हैं [दस्तावेज़ीकरण] के विपरीत (http://emberjs.com/documentation/) जिसे पूरी तरह अद्यतन नहीं किया गया है (क्योंकि अधिकांश प्रयास [1.0 मील का पत्थर] (https://github.com/emberjs/ember.js/issues] में केंद्रित हैं? लेबल = & मील का पत्थर = 1 & पेज = 1 & राज्य = खुला))। मैं यह भी सुझाव देता हूं [Google "एम्बर गिस्ट" के लिए Google] (https://www.google.ca/#hl=hi&q=ember+gist) और आपको कई शानदार संसाधन मिलेंगे। – MilkyWayJoe

+0

हाय, मैं नियंत्रक में डोम तत्वों को कैसे एक्सेस कर सकता हूं ... उदाहरण के लिए, मैं नियंत्रक में कुछ तत्व लोड करता हूं और मुझे तत्वों के माता-पिता की चौड़ाई का आकार बदलने की आवश्यकता होती है। मैं पैरेंट डोम कैसे प्राप्त कर सकता हूं और इसकी चौड़ाई नियंत्रक में कैसे सेट कर सकता हूं? – aisensiy

संबंधित मुद्दे