2013-04-16 1 views
0

이 질문은 How to display the “content” of an ObjectController? 과 약간 관련이 있습니다. 그러나 제공된 솔루션과 다른 모든 예제에서 컨트롤러는 항상 명시 적으로 만들어집니다. Ember.js에 대한 좋은 점은 Route가 대부분 모든 것을 담당한다는 것입니다. 그래서 컨트롤러를 만들 수 있지만보기에 바인딩 할 싶지 않아 :Ember.js에 의해 컨트롤러가 생성 될 때 컨트롤러를 뷰에 바인딩하는 방법

{{view App.myview controllerBinding="App.applicationController"}} 

당신은 this fiddle에 전체 예를 볼 수 있습니다. 예를 들어 Ember는 일반적으로 자식 뷰의 컨트롤러를 부모 뷰로 설정하기 때문에 그다지 좋지 않습니다.

결국 Ember가 만든 컨트롤러에 어떻게 접근 할 수 있는지 알아야합니다.

도움 주셔서 감사합니다.

업데이트 : 잘못된 피들을 제공했거나 변경 사항을 저장하지 못했습니다. 올바른 버전의 링크는 다음과 같습니다. http://jsfiddle.net/ncaZz/1/

템플릿 9 번째 줄에는 무엇을 제공해야합니까?

답변

0

실제로 바인딩 할 필요가 없습니다. 이렇게 호출하여보기에서 컨트롤러에 액세스 할 수 있습니다.

this.get('controller'); 

업데이트 답변 :

당신은 정말보기 내부에 클릭 이벤트가 없어야합니다. 당신의 행동은 귀하의 컨트롤러 또는 라우터에 있어야합니다.

귀하의 템플릿

<span style="background-color: green" {{action doStuff}}> 
    Click 
</span> 

가되어야하고 또한이

App.MyController = Em.Controller.extend({ 
    needs: ['application'], 
    doStuff: function(){ 
     this.get('controllers.application').foo(); 
    } 
}); 

가 있어야 컨트롤러를 가지고 있어야의 MYVIEW 및 MyController에는 대문자로 써야하기 때문에 타다 남은에서 이러한 항목을 확장 할 때 그 인스턴스가 아니며 대문자 사용이 필요합니다. 보기에는 실제로 모든 종류의 jquery 애니메이션이나 날짜 선택 도구를 초기화하는 것과 같은 특별한 것을 처리하는 didInsertElement의 내용 만 있어야합니다. 그러나 "엠버 방식"은 라우터 나 컨트롤러에 조치를 취하는 것입니다. 당신이의 ViewController의 요구를 사용할 수 있습니다보기 컨트롤러 이외의 컨트롤러를해야 할 경우

this.controller 

와 컨트롤러를 액세스 할 수있는보기에서

+0

그건 아닙니다. 다른 컨트롤러를 먼저 바인딩해야합니다. – Karsten

+0

컨트롤러에서 작업을 사용하기위한 답이 업데이트되었습니다. – WallMobile

+0

좋아요, Ember.js가 만든 인스턴스를 바인딩하려고 시도해야합니까? – Karsten

0

: 다음

App.DatasetEditController = Ember.ObjectController.extend({ 
    needs: ['mappingIndex'] 
}); 

및 사용 :

this.controller.mappingIndex 
+0

글쎄,보기 컨트롤러가 없습니다. TextAreaView와 같은 것은 아닙니다. 그러나 Ember가 그러한 컨트롤러를 만드는 지 여부는 알 수 없습니다. – Karsten

+0

@Karsten 기본적으로 뷰는 기본 컨트롤러에 바인딩됩니다. 그리고 당신 말이 맞아요, 그것은 어쨌든 당신이 직접 만들 수 있도록 컨트롤러를 만들 것입니다. – Rudi

관련 문제