2013-01-18 3 views
2

Ember는 ApplicationView, ApplicationController 및 'application'이라는 이름의 템플리트와 'main'이라는 이름의 콘센트를 갖는 응용 프로그램을 가지고 있으며이 모든 것이 자동으로 연결됩니다. 예. Uviews가 컨트롤러에 연결되지 않습니다.

App.ApplicationController = Ember.Controller.extend(); 

App.ApplicationView = Ember.View.extend(); 

그래서 내 응용 프로그램 템플릿은 기본 컨트롤러 속성 내가 템플릿에 액세스 할 수 있습니다

App.ApplicationController 

의 자동 인스턴스 렌더링 할 때마다. 않는 이유는

App.SongView = Em.View.extend() 

및 App.SongController = Em.Controller.extend을()이 두 연결하지 마십시오 이있는 경우 그러나 그것은하지 즉 다른 뷰와 컨트롤러와 함께 작동합니다. 내 노래 템플리트에는

App.SongController 

의 속성을 사용할 수 있습니다.
나는처럼 사용할 수 있습니다

{{view App.SongView}} 

및 템플릿에 : 다음 App.SongController에 이름 속성이있는 경우 그것에 연결되어 있지 때문에

<script type='text/x-handlebars' data-template-name='song'> 
    {{name}} 
</script> 

그것은 실 거예요 발탁 전망. 내가이

{{view App.SongView controllerBinding='App.songController'}} 

처럼 할 수 있지만 내 JS 파일도이 방법을 사용하여 App.songController의 인스턴스가 필요하지만 우리는 하드 코딩 템플릿 컨트롤러이다.
가장 좋은 방법은 무엇입니까?

업데이트 나는 여기 내 문제에 대한 JS 바이올린을 부착하고있다 : 템플릿 및 관련 컨트롤러와 뷰를 렌더링 할 경우, {{render}} 템플릿을 사용할 수 있습니다 http://jsfiddle.net/anshulguleria/K6KPJ/

+0

어떤 버전의 엠버를 사용하고 있습니까? –

답변

5

. 라우터의 this.render과 유사하게 작동합니다.

{{render "song" song}} 

이 예는 App.SongControllerApp.SongView의 인스턴스로 song 템플릿을 렌더링합니다. 현재 컨텍스트에서 song 컨트롤러의 modelsong의 값으로 설정합니다.

어떻게 작동하는지 보여주는 working JSBin입니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 그것은 나를 위해 일했다. – guleria

+0

이 방법은 응용 프로그램 템플릿에서이 {{render}} 도우미를 사용하는 경우에 효과적이었습니다. 그러나 제 경우에는 뷰의 appendTo 메소드를 사용하여 내 뷰를 렌더링하여 내 페이지에서 렌더링합니다. 그 이유는 내가 위젯을 만들려고 노력하고 있으며 모든 위젯을 제어하는 ​​단일 응용 프로그램을 가질 수 없다는 것입니다. 샘플 [jsfiddle] (http : // jsfiddle.net/anshulguleria/vQpe6 /) 여기에 내 문제를 보여줍니다. 응용 프로그램 템플릿에 {{render 'parent'}}를 쓰고 부모 생성을 제거하면 오류가 발생합니다. TypeError : container is null – guleria

+0

4 일 후에이 기능을 복제하는 좋은 방법을 찾고 있습니다. 나는 이것을 우연히 발견했다. 고마워, 고마워! –

관련 문제