在Ember.js中构建嵌入式/内联表单的“正确”方法是什么?

时间:2014-04-06 06:17:04

标签: javascript forms ember.js

我想知道在Ember.js中构建嵌入式内嵌表单的最佳方法是什么。这种形式的一个例子是Twitter时间线页面上的新推文表格,GitHub问题上的评论表格,或者这个网站上的答案表格。从UX的角度来看,这种形式具有一些特性,即:

  • 内容与表单一起显示,允许用户轻松引用其他帖子/评论/推文。
  • 它通过不要求用户离开页面来鼓励贡献。

显而易见的方法似乎是使用{{render}}帮助程序将所有表单的逻辑封装到单独的视图和控制器中。但我遇到的问题是,没有明确的方法来设置表单的模型。

理想情况下,表单将由Ember.ObjectController支持,其中新创建的模型作为其内容。但是,{{render}}助手将向该控制器提供模型对象的任务委托给其父级,这意味着我需要在我在我的每个地方复制向该视图提供空模型对象的逻辑。应用

那么关于这种情况的最佳做法是什么?是{{render}}助手是正确的做法,我只是错过了一些明显的东西吗?或者我可以采取更好的方法吗?

1 个答案:

答案 0 :(得分:1)

通常在Ember中,路线用于在正确的位置获取模型。您总是可以创建一个新的CommentController(或者用于表单的任何模型),并在路径的setupController中找到正确的模型并将其设置在该控制器上:

SomeRoute: {
  ...
  setupController: function() {
    ... // normal setup for this route, possible this._super()
    this.controllerFor('comment', this.store.find('comment', 1));
  }
}

(未经测试的伪代码)