Javascript 什么是';正确的';在Ember.js中构建嵌入式/内联表单的方法

Javascript 什么是';正确的';在Ember.js中构建嵌入式/内联表单的方法,javascript,forms,ember.js,Javascript,Forms,Ember.js,我想知道在Ember.js中构建嵌入式或内联表单的最佳方法是什么。这类表单的一个例子是Twitter时间轴页面上的新推特表单、GitHub问题的评论表单或该站点上的答案表单。从用户体验的角度来看,这样的表单有一些特性,即: 内容显示在表单旁边,允许用户轻松引用其他帖子/评论/推文 它通过不要求用户离开页面来鼓励贡献 显而易见的方法似乎是使用{{render}助手将所有表单的逻辑封装到单独的视图和控制器中。但是这种方法遇到的问题是,没有明确的方法来设置表单的模型 理想情况下,表单将由一个Emb

我想知道在Ember.js中构建嵌入式或内联表单的最佳方法是什么。这类表单的一个例子是Twitter时间轴页面上的新推特表单、GitHub问题的评论表单或该站点上的答案表单。从用户体验的角度来看,这样的表单有一些特性,即:

  • 内容显示在表单旁边,允许用户轻松引用其他帖子/评论/推文
  • 它通过不要求用户离开页面来鼓励贡献
显而易见的方法似乎是使用
{{render}
助手将所有表单的逻辑封装到单独的视图和控制器中。但是这种方法遇到的问题是,没有明确的方法来设置表单的模型

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


那么关于这个场景的最佳实践是什么?是不是
{{render}}
助手的方法正确,而我只是缺少了一些明显的东西?或者我可以采取更好的方法吗?

通常在余烬,路线用于将模型放置在正确的位置。您始终可以创建一个新的CommentController(或表单使用的任何模型),并在路由的
设置控制器
中,找到正确的模型并在该控制器上进行设置:

SomeRoute: {
  ...
  setupController: function() {
    ... // normal setup for this route, possible this._super()
    this.controllerFor('comment', this.store.find('comment', 1));
  }
}
(未经测试的伪代码)