ember.js tansitionTo并在模型上设置属性

时间:2013-05-10 21:41:02

标签: ember.js

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

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

e.g。

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'),
});

但我还希望能够预设联系人,以便在创建新联系人时默认设置此公司,并且默认情况下未指定默认值。

我怎样才能做到这一点?我可以创建一条新路线,但那么分享标记的最佳方式是什么?我应该使用partial来共享共同标记吗?

我认为的一种方法是创建一个可以像这样设置公司属性的动作:

App.IndexRoute = Ember.Route.extend({
    events: {
        contactFromCompany: function(company){
             this.modelFor('contactNew').set('company', company);
             this.transitionTo('contact.new');
        },
    },

但是如果模型尚未设置,则model返回undefined,除非之前已经访问过该路径,我不确定这是不是一个好主意。

我创建了这个显示问题的fiddle

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

我认为这是一个相当普遍的情况,有一个共同的方式会很好。

0 个答案:

没有答案