내가 재생 구성 요소가있는 독립형 부가 기능이 있다고 가정하자 백엔드와 독립적으로 작업하고 모든 작업을 내부적으로 처리합니다. 소비 작업의 컨트롤러/라우트를 만질 필요가 없도록하려면이 두 작업 (예 : recordPlay
및 recordStop
)을 addon 자체에서 처리하려면 어떻게해야합니까?를 주입 컨트롤러 액션 엠버 부가 기능 내에서
이 나는 시도했다 :
이 애드온 예를 들어 내 응용 프로그램 컨트롤러를 생성. `/app/controllers/application.js - 이것은 결코 호출되지 않습니다
addon 내에서 응용 프로그램 경로를 생성합니다. `/app/routes/application.js은 - 응용 프로그램을 소모하기는 부가 기능의 경로 우선
내가와 ApplicationController 이러한 두 가지 작업을 주입하는 부가 기능 내에서 어떻게 든 이니셜 라이저를 사용할 수있는 자신의 ApplicationRoute입니다하지 않는 한,이 호출된다?
편집 : 더러운 해결 방법을 사용하여 ApplicationRoute._actions
/app/initializers/record.js
export default {
name: 'record',
initialize: function(container, app) {
var applicationRoute = container.lookup('route:application');
applicationRoute._actions.recordPlay = function(id) {
console.log('CALLED recordPlay', id);
};
applicationRoute._actions.recordStop = function(id) {
console.log('CALLED recordStop', id);
};
}
};
왜 인덱스 컨트롤러에서 구현을 강제로 수행하고 구성 요소에서 처리하지 않을까요? 색인 컨트롤러/경로는 응용 프로그램의 루트에있을 때만 사용됩니다. – Kingpin2k
이 @ Kingpin2k을 찾아 주셔서 감사합니다. 내 지식 구성 요소에 외부 단어를 인식해서는 안됩니다 - 따라서 매장, ember 데이터, API 등 상호 작용해서는 안됩니다. 아니면 내가 여기에 몇 가지 개념을 놓치고? – WooDzu
ActionController에 액션을 주입하는 아이디어는 트리거 된 액션이 현재 루트가 무엇이든간에 루트 트리를 움직일 수 있다는 것입니다. 그러나 필요한 경우 경로/자원을 통해 중간 경로를 파악할 수 있습니다. – WooDzu