2014-05-12 50 views
2

Ember在比較部門似乎很缺乏。只能比較爲零使用#如果助手,所有的涼爽延長傭工人都寫不@index工作......,所以你不能這樣做Ember開關/索引if等

{{#each}} 
    {{#xif '@index == 3'}} 
     .... 
    {{/xif}} 
{{/each}} 

這將提供專業化( for @index == 3)。

有誰知道如何基本上做到上述?我有一個循環,但我需要專注於某些指標。

理想switch語句將是很好(可能破解車把添加這個?)

例如,

{{#each}} 
    {{#switch @index}} 
     {{case 0}} 
      .... 
     {{/case}} 
     {{case 1}} 
      .... 
     {{/case}} 
     {{default}} 
      .... 
     {{/default}} 
    {{/switch}} 
{{/each}} 

等等

現在,我不得不使用jquery專門化循環,這會導致不一致的體驗。

+0

不一致的經驗嗎?什麼樣的人,爲誰? –

回答

6

最重要的是,我同意,如果是真棒的比較,但是由於您在模板中放置了「太多的邏輯」,所以它們會反對它。

指數可以用_view.contentIndex

http://emberjs.jsbin.com/mugokaka/1/edit

訪問和開關只是語法糖的if語句,所以它仍然可以完成,但再次,它是不是一個比較,只是truthy,並有點醜陋。

{{#if statementOne}} 
    foo 1 
{{else}} 
    {{#if statementTwo}} 
    foo 2 
    {{else}} 
    //yadda 
    {{/if}} 
{{/if}} 

他們通常建議將邏輯放在控制器中,並讓它返回一個truthy語句。

+0

是的,但重點是要降低複雜性,當我必須專注於一個或兩個案例,但寫了很多jQuery代碼來做到這一點,然後在代碼背後有更多的「邏輯」..我能夠創建一個函數做我想做的事情,但可以擴展到更強大的功能。不知道它在一般情況下效果如何。 – user3606799

+0

你在哪裏被迫寫jQuery代碼? – Kingpin2k

0

Ember/Handlebars將模板中的邏輯限制爲一個非常明確的哲學原因,符合對許多事物的規定方法。它認爲模板不應該被計算和其他類似業務的邏輯所淹沒。

在模板 - 或者任何語言中爲此寫一個開關的衝動已經被認爲是一種「代碼味道」。它經常表明你的代碼中的某些東西沒有被正確地分解/結構化。這可能是因爲您需要將控制器和/或視圖分解爲更細粒度的子類,或者僅僅是將此開關/案例邏輯放入控制器或視圖中,這樣更易​​於閱讀和維護。你沒有舉例說明你爲什麼要使用開關/外殼;如果你有,也許有人可以進一步評論處理它的好方法。