处理以下情况的最佳方法是什么:
我有一条路线可以处理创建某种类型的新记录:
例如
App.ContactNewRoute = Ember.Route.extend({
model: function(controller){
return App.Contact.createRecord();
}
})
我希望能够通过像这样简单地链接到它来访问这条路线:
{{#linkTo contact.new}}New Contact{{/linkTo}}
联系人是具有公司属性的模型:
App.Contact = App.Person.extend({
company: DS.belongsTo('App.Company'),
});
但我也希望能够在创建新联系人时预设联系人以默认设置该公司,并且默认情况下没有指定默认值。
我怎样才能做到这一点?我可以创建一条新路线,但是分享标记的最佳方式是什么?我应该使用部分来共享通用标记吗?
我认为的一种方法是创建一个操作来设置公司属性,如下所示:
App.IndexRoute = Ember.Route.extend({
events: {
contactFromCompany: function(company){
this.modelFor('contactNew').set('company', company);
this.transitionTo('contact.new');
},
},
但是如果尚未设置模型,则 modelFor 返回 undefined ,除非先前已访问过该路线,而且我不确定这是否是个好主意。
我创建了这个显示问题的小提琴。
我可以创建另一条这样的路线,但两种情况都不是很好。另一种解决方案是覆盖设置上下文的路由的设置方法。
我认为这是一个相当常见的场景,如果有一个共同的方式会很好。