1

处理以下情况的最佳方法是什么:

我有一条路线可以处理创建某种类型的新记录:

例如

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 ,除非先前已访问过该路线,而且我不确定这是否是个好主意。

我创建了这个显示问题的小提琴。

我可以创建另一条这样路线,但两种情况都不是很好。另一种解决方案是覆盖设置上下文的路由的设置方法。

我认为这是一个相当常见的场景,如果有一个共同的方式会很好。

4

0 回答 0