2013-02-05 1 views
1

개체 배열을 반복하는 템플릿이 있습니다.핸들 모음 조건부 논리를 기반으로 템플릿에 뷰를 삽입하는 도우미

일부 논리에 따라 이러한 엔티티 중 일부에 대해 '삭제'버튼을 표시하고 싶습니다.이 작업을 수행하는 가장 좋은 방법을 이해하려고합니다.

실제 삭제 버튼은 다음과 같은 마크 업 렌더링 될 수는 마크 업이 내장 행동 도우미 :

<button class="btn btn-danger" {{action "removeEntityFunctionInController" entitity}}><i class="icon-remove icon-white"></i> Remove</button> 

내가

와 이것을 대체하고 싶습니다에 대한 호출을 포함하고 있습니다
{{optionalRemoveEntityButton entity}} 

나는 어쩌면 내가 같은 도우미 만들 수 있습니다 내가 생각 logicless 템플릿을 생성하려고 :

Ember.Handlebars.registerHelper('optionalRemoveEntityButton', function(entity, options) { 
    logicForDeterminingWhetherToShowView 
    removeEntityButtonView = howDoILoadAViewProgrammatically? 
    return removeEntityButtonView; 
}); 

프로그래밍 방식으로보기를로드하는 방법을 모르겠다. 이 도우미가 단순한 마크 업을 반환하는 것이 아니기 때문에보기를 사용하고 싶습니다. 또한 {{action}} 도우미에 대한 호출이 포함됩니다.

내가하려는 일을 성취하기위한 더 좋은 방법이 없다면?

답변

1

개체의 배열을 반복하는 템플릿이 있습니다. 일부 엔티티를 기반으로 일부 엔티티에 대해 '삭제'버튼을 표시하고 싶습니다.이 작업을 수행하는 가장 좋은 방법을 이해하려고합니다.

매우 일반적인 사용 사례입니다. 이런 종류의 논리를위한 아이디어 장소는 컨트롤러에 있습니다.

실제 삭제 버튼은 다음과 같은 마크 업 렌더링 될 수는 마크 업 작업 도우미 : 내가 {{optionalRemoveEntityButton entity}}

와 이것을 대체하고 싶습니다 <button class="btn btn-danger" {{action "removeEntityFunctionInController" entitity}}><i class="icon-remove icon-white"></i> Remove</button>

내장에 대한 호출이 포함되어 있습니다

원본 마크 업을 유지하는 것이 좋습니다.

내가하는 일을 성취하기위한 더 좋은 방법이 없다면?

템플릿에서 논리를 유지하는 것이 좋은 목표이지만 일반적으로 많은 핸들 바 도우미를 작성하는 것을 의미하지는 않습니다. 일반적으로 여러보기에서 반복되는 일부 표시 논리를 찾을 때만 도우미를 작성합니다.

대안은 각 포장하는 컨트롤러의 이름 (아마 ObjectController)에 ArrayController의 ItemController의 속성을 설정해야합니다 조건부 버튼을

{{#if showDeleteButton}} 
    <button class="btn btn-danger" {{action "removeEntityFunctionInController" entitity}}><i class="icon-remove icon-white"></i> Remove</button> 
{{/if}} 

를 표시합니다 {{#if}} 도우미를 사용하는 것입니다 개별 항목. 그런 다음 해당 itemController에 showDeleteButton 메서드를 정의합니다. 이 설정에 대한 자세한 내용은 Ember.ArrayController 문서를 참조하십시오.

+1

안녕하세요. .. 이걸 주셔서 감사합니다. 정말 잘되었습니다.다른 누구라도 따라 오면 '속성'프로토 타입 확장을 조건부 논리 함수에 적용해야한다는 것을 알아야합니다. 이것은 Ember에게 속성과 같은 함수를 처리하도록 지시합니다. 그래서 {{ifif}} 조건부 도우미가 함수를 호출하고 반환 값을 사용하여 조건부 블록을 실행할지 여부를 결정합니다. 그렇지 않으면 {{#if}} 도우미는 함수가 존재하는지 단순히 확인합니다 .... 감사합니다! – ianpetzer