2014-05-12 3 views
2

Ember가 비교 부서에서 부족한 것 같습니다. 당신이 전문성을 제공 할Ember 스위치/인덱스 등,

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

처럼 뭔가를 할 수 없도록 당신은 (즉, # 만약 도우미 사람들이 ... @index 작동하지 않습니다 쓴 모든 멋진 확장 헬퍼를 사용하여 제로로 비교할 수 있습니다 @index == 3).

본질적으로 위와 같은 작업을 수행하는 사람은 누구입니까? 루프가 있지만 특정 인덱스를 전문화해야합니다.

이상적 스위치 문 (?이 추가 핸들을 해킹 할 수) 좋을 텐데 지금 내가 사용하는 데

예를 들어,

{{#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}} 

일반적으로 로직을 컨트롤러에 넣고 진리 문장을 반환하는 것이 좋습니다.

+0

그래, 요점은 복잡성을 줄이는 것이며, 하나 또는 두 개의 케이스를 전문화해야하지만 jquery 코드를 많이 작성해야하므로 코드 뒤에 많은 "논리"가 있습니다. 기능은 내가 원하는 것을 할 수 있지만 더 강력하게 만들 수 있습니다. 비록 그것이 일반적으로 얼마나 잘 작동하는지 잘 모르겠습니다. – user3606799

+0

jquery 코드를 어디에서 작성해야합니까? – Kingpin2k

0

Ember/Handlebars는 많은 것들에 대한 규범 적 접근법에 따라 매우 명확한 철학적 이유로 템플릿에서 사용할 수있는 논리를 제한합니다. 템플릿은 계산 및 기타 비즈니스와 유사한 논리로 흩어져서는 안됩니다.

템플릿이나 다른 언어로 스위치를 작성하려는 충동은 이미 일종의 "코드 냄새"라고 생각할 수 있습니다. 종종 코드에서 무언가가 분해/구조화되지 않았 음을 나타냅니다. 컨트롤러 및/또는 뷰를 더 세분화 된 서브 클래스로 나누거나 단순히이 스위치/케이스 로직을 컨트롤러 또는 뷰에 넣는 것이 더 좋을 것입니다.이 스위치/케이스 로직은 읽고 유지하기가 더 쉽습니다. 스위치/케이스를 사용하려는 이유에 대한 예제를 제공하지 않았습니다. 당신이 가지고 있었다면 누군가는 그것을 처리 할 수있는 좋은 방법에 대해서 더 논평 할 수 있습니다.