2012-11-20 5 views
1

컨트롤러 또는보기에서 경로를 호출하는 적절한 방법은 무엇입니까? 예를 들어 나는 많은 행을 가진 테이블을 가지고있다. 모든 행보기에는 라우터를 호출해야하는 클릭 방식이 있습니다. 작동하지 않아 컨트롤러 또는보기에서 앱을 탐색하는 데 문제가 있습니다. http://jsfiddle.net/arenoir/Cs938/ember.js가보기 또는 컨트롤러에서 transitionTo로 어려움을 겪고 있습니다.

App.TableView = Ember.CollectionView.extend({ 
    tagName: 'table', 
    contentBinding: 'controller.rows', 
    itemViewClass: Ember.View.extend({ 
    tagName: 'tr', 
    template: Ember.Handlebars.compile("<td>{{view.content.name}}"), 
    click: function(){ 
     var router, tab; 
     router = this.get('controller.target.router'); 
     tab = this.get('content.id'); 
     router.goTab(tab); 
    } 
    }) 
}); 

다음 포스트가 유용하다 : 여기

는 일례이다. EmberJS: How to transition to a router from a controller's action. 이 구현에

 click: function(){ 
      var router, tab; 
      router = this.get('controller.target.router'); 
      tab = this.get('content.id'); 
      router.goTab(tab); 
     } 

변경이 :

click: function(){ 
     var router, tab; 
     router = this.get('controller.target.router'); 
     tab = this.get('content.id'); 
     router.transitionTo(tab); 
    } 

이 바이올린을 수정하여보기에서으로의 전이 로직의 현재 구현이

답변

6

. 하지만 예제에서보기가 명확하지 않아서 왜 당신이 View에서 Transitions을 trigger하고 ​​싶지는 않습니다. Statemanagement는 항상 라우터에서 발생해야합니다. 또 다른 어색한 점은 ApplicationController에서 행을 가져 오는 것입니다. 왜 ArrayController를 사용하지 않습니까? 그래서 내 견해로 볼 때, 잘못된 부분에 어떤 것들이있는 것 같습니다.

+0

데이터가 자체 컨트롤러에 있어야하지만 예제에는 필요하지 않음에 동의합니다. transitionTo를 호출하지 않고 애플리케이션을 탐색하기 위해 테이블 ​​행에 click 이벤트를 추가하는 방법은 무엇입니까? 테이블 행을 클릭 할 수있게 만드는 것이 뷰에서 탐색이 필요한 부분을 생각할 수있는 가장 간단한 예였습니다. 다른 예로는 콜백 함수를 허용하는 플러그인이 있습니다. 보기에서 앱을 탐색하는 적절한 방법이 있어야합니다. –

+0

"transitionTo를 호출하지 않고 응용 프로그램 탐색"이란 무엇을 의미합니까? Ember Apps 내의 상태는 항상 라우터/상태 관리자에 의해 처리됩니다. cou가 질문을 명확히 할 수 있습니까? – mavilein

+0

표시 작업으로 전환하는 테이블 행에 클릭 이벤트를 어떻게 추가 하시겠습니까? –

관련 문제