2013-08-04 21 views
8

şey render sonra bir kez kodunu çalıştır ama uzak: Bu hazır bir Kor belgesi için doğru yolu veya eğertüm görünümler tamamen ember.js doküman hazır gibi

App.ApplicationView = Em.View.extend({ 
    didInsertElement: function() { 
    // Do your magic. 
    } 
}); 

merak ediyorum Kor bu basit ve çok yaygın bir şey için daha doğal desteği varsa.

cevap

5

didInsertElement doğru yerdir, ancak senin kuyruğunu hale tamamen emin olmak istiyorsanız tamamen böyle, ayrıca afterRender olay dinleyebiliriz şey aktarılmadan:

App.ApplicationView = Ember.View.extend({ 
    didInsertElement: function() { 
    Ember.run.scheduleOnce('afterRender', this, 'processChildElements'); 
    }, 

    processChildElements: function() { 
    // do here what you want with the DOM 
    } 
}); 

yardımcı olur Umut.

+3

Aslında ApplicationView doğru yerde olmak gibi görünmüyor, ancak bundan sonra diğer şablonları render başladıklarında Kanca ateş etmiyor. Ben render sonra kod icra edilmesini isteyen görünümüyle ilgili didInsertElement tanımlanmıştır ve bu iyi çalışır, ancak Kor tüm görünümler her geçiş üzerinde, işlenen sonra için genel bir kanca olsaydı çok güzel olurdu. – clueless

+0

@clueless, sen '$ (belge) sözü .ready' yani evet' ApplicationView' zaten yorumladı olarak sanırım aynı yapmanız gereken diğer görünümler için, ilk istek içindir. Bildiğim kadarıyla, tüm görünümler oluşturulduğunda yerleşik bir kanca yok. – intuitivepixel

+0

@clueless '$ (document) .ready' için bir eşdeğer yoktur, çünkü bu global Spagetti koduna neden olur. JQuery mantığınızı, göreve en uygun olan View'a getirmeniz gerekiyor. – mavilein

10

Temel View sınıfını yeniden açıp render kuyruğuna ekleyerek kolayca "post render" kanca ekleyebilirsiniz. İşte

nasıl size göstermek için bazı kod: bu ilk istek için çalışır,

Ember.View.reopen({ 
    didInsertElement : function() { 
     this._super(); 
     Ember.run.scheduleOnce('afterRender', this, this.didRenderElement); 
    }, 
    didRenderElement : function() { 
     // Override this in your View's 
    } 
}); 
+0

Bu, doğru yönde bir adımdır. Şu anda herhangi bir geçiş veya yenileme işleminden sonra sayfanın oluşturulmasında javascript'i çalıştırmaya çalışıyorum. Benim jquery bloğumu willTransition, didTransition ve daha önce ve sonra Mood kancalarını uygulama rotasında şanssız bırakmayı denedim. Herhangi bir fikir? – genkilabs

0
App.ApplicationView = Ember.View.extend({ 
    afterRender: function() { 
    Ember.run.next(this, function() { 
     // This will run one time, after the full initial render. 
    }); 
    } 
});