关于Ember中控制器的典型行为

时间:2011-12-29 06:08:48

标签: ember.js

ember.js中的控制器是否意味着与iOS的主视图区域/场景相关联,或者更多地与一组数据相关联?

在ember中将几个主视图绑定到同一个控制器是否常见/明智?

在iOS中,屏幕的主要部分或部分绑定到单个控制器。如果你想提出另一个主界面,比如一个模态窗口来创建一个新元素,你(通常)有一个完全独立的控制器来管理该视图及其数据/逻辑。

在像Zend Framework这样的东西中,你有控制器可以执行一些确保身份验证的常见旋转步骤,但主要是这些操作扮演控制器在iOS中所做的角色,处理逻辑并为1个主要部分或视图提供数据(作为网络,这通常最终成为整个页面。)

在ember中使用控制器的典型角色或建议模式是什么?

2 个答案:

答案 0 :(得分:17)

这里有几个不同的问题,所以我会一次解决一个问题。

首先,您询问控制器应该是面向数据还是面向视图。根据我的经验,这两种行为都是允许的。控制器是管理应用程序数据集的绝佳方式,包括过滤和搜索等。 Evin Grano从SproutCore的角度写了一篇关于此的好文章,大多数概念也适用于Ember:http://www.itsgotwhatplantscrave.com/2009/07/30/root-controller-paradigm/。控制器也非常适合控制应用程序状态和行为。例如,您可以将一个方法放在一个控制器中,该控制器作为应用程序中其他位置的按钮操作绑定。但是,您还应该检查Ember状态,看看它们是否更适合您的场景。

其次,您询问将多个视图绑定到同一个控制器。就个人而言,只要控制器保持不同的目的,我就不会对此表示担忧。如果视图在逻辑上相关并且以相同的状态或数据共享,则单个控制器是有意义的。如果您发现控制器越来越多地覆盖了太多不同的区域,您应该考虑将其拆分为多个控制器。

答案 1 :(得分:1)

根据我在Ember.js的有限经验,我对以下内容进行了规范:

  • 该视图处理与表示层中的更改相关的用户操作,仅限于其自己的实例。

  • 导航控制器/状态管理器处理对所呈现内容的复杂操作(添加多个视图,删除其他视图等)。

  • 控制器响应与数据层相关的用户操作。