2014-03-25 3 views
0

렌더 도우미를 사용하여 렌더링 할 모델, 경로, 컨트롤러를 동적으로 선택하기위한 템플릿은 outlined in this question (및 다른 곳)과 같습니다. 문제는 업그레이드 악몽으로 발전하기 전에 문제를 잡으려고 Ember.ENV.RAISE_ON_DEPRECATION 플래그가 설정된 상태로 실행하고 싶다는 것입니다. 나는이처럼 핸들 도우미에서 Ember.Render를 호출 오전 :call()을 사용할 때 Emble Render가 depotelated quoteless 매개 변수에 대해 불평을 멈추는 방법?

{{#each module in modules}} 
    <div class="tab-content" {{bind-attr class="module.active:active"}}> 
    {{renderModuleEdit module module}} 
    </div> 
{{/each}} 

문제는 렌더링이 'quoteless 매개 변수'에 대한 테스트에 실패

Ember.Handlebars.registerBoundHelper('renderModuleEdit', function(callingContext, module, options) { 
    var modelName = callingContext.get('type').get('modelName'); 
    return Ember.Handlebars.helpers.render.call(callingContext, "edit_" + modelName, modelName, options); 
}); 

템플릿이이 코드를 가지고 , 비록 직접 핸들 바 템플릿 문법보다는 call()을 사용하고 있습니다. 테스트는 출처에서 this line에 정의되어 있습니다. 실제 테스트는 options.types[0] !== 'ID'이고 options 매개 변수는 위의 첫 번째 코드 블록에서 사용할 수 있지만 1 st 유형을 'ID'에서 벗어나 변경할 수 있습니다. 에서으로 바꿀 수 있습니다. 그러면 나중에 뭔가 미묘하게 깨질 수 있습니다. 오류 메시지가로를 통해 제공 :이 전화를 걸 {{render edit_Intro}}를 사용하고 있지 않다으로

Uncaught Error: Using a quoteless parameter with {{render}} is deprecated. Please update to quoted usage '{{render "edit_Intro"}}.

, 나는이 문제를 해결하는 방법을 모른다. 템플릿 코드를 {{renderModuleEdit 'module' 'module'}}으로 변경하면 내 renderModuleEdit의 매개 변수가 필요한 모델 인스턴스가 아닌 'module'의 문자열로 나타납니다.

이 테스트가 실제로 무엇인지에 대한 이해가 없으며 'quoteless'대 'quoted'매개 변수가 의미하는 것조차도 느끼지 않습니다. 누군가 이것을 설명 할 수 있습니까? 등록 된 바운드 핸들바 도우미에서 render를 호출 할 때이 deprecation 경고 주위에 경고가 표시됩니까?

답변

1

더러운 솔루션,하지만 지금 작업 :

Ember.Handlebars.registerBoundHelper('renderModuleEdit', function(callingContext, module, options) { 
    options.types[0] = "STRING"; // FIXME: hack 

    var modelName = callingContext.get('type').get('modelName'); 
    return Ember.Handlebars.helpers.render.call(callingContext, "edit_" + modelName,  modelName, options); 
}); 

가 나는 또한 아직 적절한 수정 프로그램을 찾을 수 없습니다 : -/

+0

그래, 나는'helpers.render'으로 디버깅 "STRING"이 다른 허용 된 속성 중 하나임을 발견했습니다. 이러한 옵션이 전달되는 ember 코드의 모든 모서리를 찾지 못했기 때문에 실수로 다른 것에 영향을 미칠 수 있습니다. –