我正在尝试创建一个小型 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());
}
});
你怎么看?我做错了吗?