1

我对 Ember 很陌生,我很想为我的应用程序找到更好的方法:

应用:屏幕水平分成两部分:

  • 左侧是填写个人属性(姓名、姓氏、电子邮件)的表格
  • 右侧部分是左侧表格的图形视图

我不知道最好的解决方案:

解决方案1:

  • 模型的人对象(实例现在是一个人对象全局变量)
  • PersonFormController 管理表单并进行属性验证
  • PersonFormView 显示表单
  • PersonRenderedController:管理表单的渲染
  • PersonRenderedView(仅显示视图,无用户交互)
  • 2 个控制器的 content 属性引用了 person 全局变量
  • 使用“连接插座”连接控制器/视图 router.get('applicationController').connectOutlet('left', 'personForm'); router.get('applicationController').connectOutlet('right', 'personRendered');

我不确定这个解决方案,因为 PersonRenderedController 不是很有用,仅用于“插座连接”。

解决方案2:

  • 模型的人对象(实例现在是一个人对象全局变量)
  • PersonFormController 管理表单并进行属性验证
  • PersonFormView 显示表单
  • PersonRenderedView(仅显示视图,无用户交互)
  • NO personRenderedController(不需要,因为这个视图只有显示模式)
  • 没有插座,但在通用模板中手动创建 2 个视图(表单和渲染)

我认为解决方案 1 可能更灵活(以防渲染视图需要控制器)

你能建议吗?

4

1 回答 1

1

解决方案 1 对我来说似乎更好。与插座一起去总是一个好主意。在这种情况下,您不必创建 PersonRenderedController。您可以以适合您需求的方式使用 connectOutket。以下段落来自源代码,并显示了如何将此方法与选项哈希一起使用:

*/ connectOutlet: function(name, context) { // 规范化参数。支持的参数: // // name // name, context // outletName, name // outletName, name, context // options // // 选项哈希有以下键: // // name: 的名称控制器和视图 // 使用。如果通过,则名称 // 确定视图和控制器。// outletName:要填写的出口的名称。 default:'view' // viewClass:要实例化的视图的类 // controller:要传递给视图的控制器实例 // context:an应该成为 // 控制器的对象,content从而成为 // 模板的上下文。

这样您就可以将您的 1 个控制器用于该人,也可以用于您的其他视图:

router.get('applicationController').connectOutlet({
   outletname: "right",
   viewClass : App.PersonRenderedView,
   controller: router.get("personFormController")
 })

所以我建议使用更明确的 connectOutlet 版本,与基于名称匹配的默认方法相比,它为您提供更多控制。

于 2013-01-01T23:41:00.627 回答