2013-05-15 53 views
2

有什麼辦法將可變上下文傳遞給{{render}}幫助器嗎?調用帶變量名稱的把手{{render}}

舉例來說,我有我的模型多態的關係,我想呈現的各種不同類型的適當的視圖(不都寫的if語句的整個字符串。

events模板看起來像這樣:

<ul> 
{{#each event in model}} 
    <li> 
     {{event.time}} {{render event.type event.eventable}} 
    </li> 
{{/each}} 
</ul> 

event.type是一個字符串,並設置爲song如果我使用{{render 'song' event.eventable}}一切都很正常,但傳遞變量字符串'song'產生什麼

可以這樣做嗎?

回答

4

您可以通過編寫自己的Handlebars Helper來實現此目的,該Handlebars Helper確定要呈現的模板,然後委託給呈現助手中的構建。試試這個:

Ember.Handlebars.registerBoundHelper('renderEvent', function(callingContext, event, options) { 
    return Ember.Handlebars.helpers.render.call(callingContext, event.get('type'), 'eventable', options); 
}); 

然後在你的模板,你會調用模板如下:

{{#each event in model}} 
    {{renderEvent this event}} 
((/each}} 
+0

感謝您的幫助,但我不能得到這個工作。我不得不改變你的調用'event.type'到'event.get('type')',並嘗試將eventable'改爲'event.get('eventable')',但是返回一個錯誤:'Uncaught TypeError:Object [object Object]在ember-latest.js中沒有方法「匹配」' – rainbowFish

+0

是的。我編輯了使用event.get('type')的答案,但我相信你應該保持原樣。 ..假設它是你的模型的一種特性...我修改了一個現有的小提琴來展示這個工作:http://jsfiddle.net/ianpetzer/QTdb8/ ....祝你好運 – ianpetzer

+0

好極了,它看起來像是在工作!由於某種原因,當我昨天嘗試傳遞第二個參數的字符串時,Handlebars抱怨說我只能在不傳遞模型的情況下調用'render'。 – rainbowFish