작은 EmberJS 응용 프로그램을 만들려고하고 있지만 올바르게 구조화하는 방법에 대해 고심하고 있습니다. 사이드 바에 폴더 목록을 표시하는 "라이브러리"라는 기본보기가 있습니다. 사용자는 각 폴더를 클릭하고 가운데에 콘텐츠를 표시 할 수 있습니다 (사이드 바는 여전히 활성 상태 임).EmberJS 중첩 리소스를 구성하는 방법은 무엇입니까?
내가 그러므로이 특정 상황에서 폴더를 표시하는 라이브러리 리소스 및 중첩 된 자원이 있습니다
:this.resource('library', function() {
this.resource('libraryFolders', {path: 'folders'}, function() {
this.resource('libraryFolder', {path: ':folder_id'};
}
};
부모 루트 폴더에 접근 할 수 있도록를, 나는 종속성을 설정
App.LibraryController = Ember.Controller.extend({
needs: ["libraryFolders"],
folders: null,
foldersBinding: "controllers.libraryFolders"
});
App.LibraryRoute = Ember.Route.extend({
setupController: function(controller) {
controller.set('controllers.libraryFolders.model', App.Folder.find());
}
});
첫 번째 질문 : 이것은 좋은 방법입니까? 나는 부모 컨트롤러가 자식들에게 의존하는 것이 이상하다고 생각합니다.
다른 문제가 발생합니다. 다른 컨텍스트에서 폴더를 다시 사용하려면 어떻게해야합니까? LibraryFoldersController에서 작성하는 모든 메서드는 실제로 DRY가 아니라이 메서드에만 적용됩니다. 내가 생각해 낸 것은 루트 "폴더"리소스를 추가하고이 파일에 종속성을 추가하는 것입니다.
this.resources('folders');
App.LibraryController = Ember.Controller.extend({
needs: ["Folders"],
folders: null,
foldersBinding: "controllers.folders"
});
App.LibraryRoute = Ember.Route.extend({
setupController: function(controller) {
controller.set('controllers.folders.model', App.Folder.find());
}
});
어떻게 생각하십니까? 내가 잘못하고 있니?
감사합니다. 믹스 인 접근 방식에 대해 생각하지 않았습니다.이 내용은 조금 더 읽을 필요가 있습니다. 첫 번째 접근 방식에 대한 주요 관심사는 나에게 이상한 소리를내는 어린이 컨트롤러에 의존하는 것이 었습니다. –