Ember.js 将预设传递到创建控制器

Ember.js 将预设传递到创建控制器,ember.js,Ember.js,在我的应用程序中,有模板和文档。我希望能够从模板创建文档,也就是说,用户将能够转到模板显示页面,单击按钮,然后重定向到新文档页面,并从模板中预填充文档文本(我只需要预填充文本,我不关心文档是否知道其制作模板) 但是如何将文本传递到新的文档页面 我最后做了以下几件事: App.Router.map -> @resource 'documents', -> @route 'new' @route 'new_from_template', path: '/new/:te

在我的应用程序中,有模板和文档。我希望能够从模板创建文档,也就是说,用户将能够转到模板显示页面,单击按钮,然后重定向到新文档页面,并从模板中预填充文档文本(我只需要预填充文本,我不关心文档是否知道其制作模板)


但是如何将文本传递到新的文档页面

我最后做了以下几件事:

App.Router.map ->
  @resource 'documents', ->
    @route 'new'
    @route 'new_from_template', path: '/new/:template_id'

App.DocumentsNewFromTemplateRoute = Ember.Route.extend
  model: (params) ->
    model = App.Document.createRecord()

    if params.template_id
      App.Template.find(params.template_id).then (template) ->
        model.set 'text', template.get('text')

    model

  setupController: (controller, model) ->
    if model._reference.type == App.Template
      model = @model(template_id: model.id)

    @currentModel = model
    @controllerFor('documentsNew').set 'model', model

  renderTemplate: ->
    @render 'documents/new'
为了链接到模板的新文档表单,我只需

{{#linkTo 'documents.new_from_template' template}}Create a document{{/linkTo}}

您可以在控制器中定义操作:

App.TemplateRoute = Em.Route.extend({
  model: function() {
    return Em.Object.create({
      name: "A Template",
      values: {title: "Templated Title"}
    });
  }
});

App.TemplateController = Em.ObjectController.extend({
  goToNewDocument: function() {
    var o = Em.Object.create(this.get('values'));
    o.set('source', 'Template');
    App.Router.router.transitionTo('newdoc', o);
  }
});

App.NewdocRoute = Em.Route.extend({
  model: function() {
    return Em.Object.create({title: "Default Title", source: "Model hook"});
  }
});

如果您能展示一些您迄今为止尝试过的代码,那么就更容易提供帮助了。我只是被卡住了。我有一个可能实现它的想法,但它很糟糕。基本上,我会创建一个接受模板id的单独/新路由,以及一个单独的控制器,它完成“普通”NewController所做的一切,但也从模板复制文本。我觉得这太怪异了,甚至不能考虑其他的选择。看看我对你的另一个问题的答案()我猜它也适用于这个问题,这和Mixin有关吗?你是对的,但不是,我是快速评论的。