2012-12-25 11 views
6

मेरे पास कुछ jQuery कोड है जो दृश्य प्रस्तुत होने पर चलाने की आवश्यकता होती है। प्रारंभिक के लिए प्रस्तुत करना मैं आसानी सेमैं एम्बर.जेएस में पुनः प्रस्तुत करने के लिए कैसे बाध्य कर सकता हूं?

App.FooView = Ember.View.extend({ 
    didInsertElement: function() { 
    console.log("the view was rendered"); 
    this.$().someStuff(); 
    } 
}); 

कर सकते हैं लेकिन जब से someStuff() विधि दृश्य तत्वों के गुणों से छेड़छाड़ कर रहा है, मैं इसे चलाने के लिए जब दृश्य डेटा बाइंडिंग की वजह से फिर से प्रदान की गई है, क्योंकि यह खो देंगे की जरूरत है कस्टम उत्पन्न गुण।

+1

इसे जोड़ें। $()। SomeStuff() के अंदर रेंडर विधि के बजाय अंदर प्रवेश करें और मुझे बताएं ... –

उत्तर

15

आप दृश्य को फिर से प्रस्तुत करना चाहते हैं, तो जब कोई खास विशेषता बदलता है तो क्या आप कुछ इस तरह दिखेगा हैं:

App.FooView = Ember.View.extend({ 
    myProperty: 'This value might change', 
    myPropertyChanged: function() { 
     //Do some stuff here (maybe change the template) and call... 
     this.rerender(); 
    }.observes('myProperty') 
}); 

लेकिन आप केवल करने के बाद दृश्य फिर से प्रस्तुत करने के लिए देख रहे हैं दृश्य तो बनने के बाद आप अधिक कुछ इस तरह हैं:

App.FooView = Ember.View.extend({ 
    init: function() { 
     this._super(); 
     //Do some stuff here (maybe change the template) and call... 
     this.rerender(); 
    } 
}); 

स्रोत:http://emberjs.com/api/classes/Ember.View.html

0

ऐड में आकाश के स्पष्टीकरण के लिए आयन, आप इनिट हुक के बजाय didInsertElement हुक का उपयोग करना चाहते हैं ताकि दृश्य बनने के बाद ही पुनः प्रस्तुत किया जा सके। ,

App.FooView = Ember.View.extend({ 
    didInsertElement: function() { 
     this.rerender(); 
    } 
}); 

हालांकि मैं बिल्कुल यकीन है कि तुम क्यों करने के बाद दृश्य पहले ही प्रदान की है rerender करना होगा नहीं कर रहा हूँ: तो यह और अधिक की तरह लग रहे हैं।