3

在过去的几个月里,我一直在玩 ember.js,最后总是问“控制器扮演什么角色”,因为当我完成时它通常看起来像这样

App.Controller = Ember.Controller.extend({
  content: null
});

如果我有任何基本的验证要求,我倾向于在视图本身中执行这些操作。

如果我需要填充控制器内容,我会在路由器中执行此操作(尽管我更愿意减少此对象在当前版本的 ember 中似乎具有的职责数)。

我的模型通过 ember-data 使用单独的适配器进行持久化,并在需要时使用一些类似行为的域逻辑。

在我构建的每个应用程序中,我只剩下一个薄(非常非常少逻辑)控制器,如上所示。我确实发现这是对项目进行排序/分页/搜索/过滤/等的好地方,但是这个控制器对象在设计良好的 ember.js 应用程序中还应该负责什么?

4

1 回答 1

3

正如你所说,排序/分页/搜索/过滤(顺便说一句,Ember.ArrayController 支持其中的大部分)

我认为其他东西可以是围绕内容(模型)计算的属性,然后视图依赖于这些计算的属性,而不是自己完成这项工作。

也许它可能是一个跟踪和持久化视图状态(例如折叠/展开)的好地方,它不能在视图本身中持久化,因为它每次都被销毁/创建。

于 2012-12-27T16:09:34.713 回答