在我的应用程序中,有模板和文档。我希望能够从模板创建文档,即用户将能够转到模板显示页面,单击一个按钮,然后被重定向到新的文档页面,其中文档文本从模板中预先填充(我只需要预先填写文本,我不在乎文档知道它的模板)。
但是我如何将文本传递到新的文档页面?
在我的应用程序中,有模板和文档。我希望能够从模板创建文档,即用户将能够转到模板显示页面,单击一个按钮,然后被重定向到新的文档页面,其中文档文本从模板中预先填充(我只需要预先填写文本,我不在乎文档知道它的模板)。
但是我如何将文本传递到新的文档页面?
我最终做了以下事情:
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"});
}
});