2013-01-11 14 views
7

Ember'deki registerBoundHelper'ın blok stili yardımcılarının üstesinden gelebileceği düşünülüyor.Ember bağlı blok yardımcısı

Ember.Handlebars.registerBoundHelper('unlessUndefined', (context, options) -> 
    unless typeof context == "undefined" 
    return options.fn(this) 
    else 
    return options.inverse(this) 
) 

fikri gibi kullanmak olma: Örneğin, ben şu oluşturulan

{{#unlessUndefined choice}} 
    {{#if choice}} 
    <p>You chose yes</p> 
    {{else}} 
    <p>You chose no</p> 
    {{/if}} 
{{else}} 
    <p>Make a choice</p> 
{{/unlessUndefined}} 

option.fn şeylerin (bu) parçalar herhangi bir çıktı oluşturmak için görünmüyor. Bunu yaparken konsolda bir hata iletisi alıyorum: "Oluşturma işleminin dışında appendChild'i kullanamazsınız"

Bu mümkün değilse, belki de bir başkası, koşullu bir bloğa ulaşmanın başka bir yolunu önerebilir. sadece bağlı değer tanımsız değilse gösterilsin mi?

cevap

4

Sadece birkaç kez bu konuyla mücadele ettim ve bir çeşit düzeltme yaptım. Çekme isteğine registerBoundHelper yönteminin uygulanmasıyla baktım. Bu boundHelper yöntemine benziyor https://github.com/emberjs/ember.js/pull/1274/files#L0R357

Ember.run.scheduleOnce('render', view, 'rerender') 

sadece orijinal yardımcı yöntemini sarar ve anonim bir görünüm oluşturur:

bu çizginin üzerinde aşağıdaki ekledi. Tek sorun, gözlemcinin, ilk görüntüyü ilk önce aynı görünüme sokmadan, anonim görüntüyü render moduna geçirmesidir.

En azından böyle olduğunu düşünüyorum. Her neyse, şimdi benim için çalışıyor. Belki bu bir böcek mi?

+1

Merhaba Paul. Bu bilgi için teşekkürler. Şu anda Ember'in ana sürümünü çalıştırıyorum, böylece çözümünüzü uygulamaya koyamıyorum. Ancak, orijinal görünümün yeniden işlenmemesi konusunda haklı olduğunuzu düşünüyorum. Yaptıkları değişiklikler ile, bir işlev içinde yeniden işleyiciyi yaptıklarından bahsettiğiniz satırı eklemek o kadar kolay değildir ve bu işlevin içeriği orijinal görünüme erişemez. Davranışı daraltabildiğim zaman, muhtemelen bir hatayı açmaya değer. –

+0

Henüz bir sorun mu var? –

+0

bulunamadı, bir tane açıldı: https://github.com/emberjs/ember.js/issues/2237 –