2016-12-19 1 views
2

Ember.js를 처음 사용하고 있으며 철학을 이해하는 데 몇 가지 문제가 있습니다. 내가 작업을 최대, 아래의 데이터하지만 실제 생활에서, 내가 Fotorama 내 갤러리 구성 요소 (나는 그것이 괜찮 으면 모르겠지만 내가 didInsertElement 방법에서)에서 초기화했다고 말할 수 있습니다. 이 라이브러리에는 자체 이벤트가 있습니다.ember.js 구성 요소에서 맞춤 이벤트를 처리하는 방법은 무엇입니까?

$('.fotorama').on('fotorama:ready', function (e, fotorama) {}); 

또는 : 그들은 일반 JS에서 다음과 같이 할 수

$('.fotorama').on('fotorama:show', function() {}); 

하지만 난 엠버에, 그 어떻게 든 구성 요소의 행동에 매핑 할 수 있어야한다고 생각한다. 내 질문은 : 어떻게? 나는 그 행동들 안에서 (다른 구성 요소들 또는 라우터에 의해 잡히게 될) 어떤 행동들을 해고 할 필요가있다. 그래서 나는 다음과 같아야한다고 생각한다 : this.sendAction('actionName', actionParams);

답변

3

sendAction 메소드를 호출하는 컴포넌트 참조를 유지할 수있다.

didInsertElement(){ 
this._super(...arguments); 
var _this=this; 
this.$('.fotorama').on('fotorama:show', function() { 
    _this.sendAction('actionName', actionParams); 
}); 
} 
willDestroyElement(){ 
this._super(...arguments); 
this.$('.fotorama').off('fotorama:show') 
} 

이 질문에 대한 답변이 더 있으면 찾아보십시오. 나는 행복하게 내 대답을 제거 할 것이다.

+0

왜 이런 접근 방식을 권장하지 않는 문서 나 정보를 제공해 줄 수 있습니까? – ykaragol

+1

_didInsertElement()는 이벤트 리스너를 첨부하기에 좋습니다. 이것은 특히 맞춤 이벤트 또는 내장 이벤트 핸들러가없는 다른 브라우저 이벤트에 유용합니다 ._ [엠버 가이드] (https://guides.emberjs.com/v2.10.0/components/the-component-lifecycle)의 _/# toc_integrating-with-third-party-libraries-with-code-didinsertelement-code) – ykaragol

+2

나는 보통 jquery 플러그인을 다룰 때 이와 같은 코드를 작성한다. 하지만 jquery 플러그인의 대부분은 ember와 잘 작동하지 않을 것이라고 엠버 사람들 주위에 개념이 있습니다. 그래서 우리는 그것을 우리 자신의 것으로 쓸 필요가 있습니다 ... 나는 간단히'추천하지 않은 접근법 '을 추가하여 하원 의원이 더 많은 표를 얻지 못하도록했습니다. :) @locks는 우리를 계몽 할 수 있습니다. – kumkanillam

관련 문제