2013-04-22 2 views
4

나는 ember-rails gem을 사용하는 레일 응용 프로그램이 있습니다.ember-rails 컨텍스트 외부에서 ember-rails 핸들 막대 템플릿 사용

내 사이트에는 엠버에는 없지만 자산 파이프 라인을 통해 제공되는 핸들 막대 템플릿 중 하나를 사용하는 것이 편리한 곳이 있습니다. 그러나 무언가 잘못 될 것으로 보입니다.

Ember.TEMPLATES["views/wanderlists/templates/gallery"]({}) 
TypeError: Cannot read property 'buffer' of undefined 

어떤 생각이 왜 생성 템플릿이 문제가 될 것이다 :이 템플릿을 사용하려고하면,

Ember.TEMPLATES["views/wanderlists/templates/gallery"] = Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) { helpers = helpers || Ember.Handlebars.helpers; var self=this; 


    data.buffer.push("<h1>Gallery!</h2>\n"); }); 

그러나 : 특히, 내 템플릿과 같이 반환?

답변

6

생성 된 템플릿에 문제가있는 이유는 무엇입니까?

ember 핸들바 컴파일러에서 컴파일 된 핸들 막대 템플릿을 일반적인 핸들 막대 템플릿처럼 호출 할 수 없습니다. 그들은 완전히 다른 주장을 기대합니다. 특히 그들은 (context, options)이 전달 될 것으로 기대하며, 여기서 options에는 출력이 기록 될 data.buffer가 있습니다. 그래서 예를 들어, 당신이하려고하면 :

Ember.TEMPLATES["views/wanderlists/templates/gallery"](this, {data: {buffer: 'NOT-A-BUFFER'}}) 

콘솔 출력해야 TypeError: Object NOT-A-BUFFER has no method 'push'

가 엠에없는 내 사이트의 섹션이지만 핸들 중 하나를 사용하는 것이 편리 할 것 인 템플릿은 자산 파이프 라인을 통해 제공됩니다.

확인. 이것은 실제로하기가 쉽습니다. 바로 Ember.TEMPLATES에 직접 접속하는 것이 아닙니다. 대신 Ember.View을 사용하고 appendTo()를 직접 호출하여 렌더링하십시오. 예를 들면 :

App = Ember.Application.create({}); 
var view = Ember.View.create({ 
    templateName: "views/wanderlists/templates/gallery", 
    name: "Bob" 
}); 
view.appendTo("#message"); 

여기 예를 들어 작업 : 자세한 내용은 http://jsfiddle.net/mgrassotti/VWmFq/1/

Ember Guides: Defining a view

+0

굉장보세요! 도와 주셔서 감사합니다! – earnold