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

しかし、デフォルトが指定されていない場合と同様に、新しい連絡先を作成するときにデフォルトでこの会社を設定するように連絡先を事前設定できるようにしたいと考えています。

どうすればこれを達成できますか?新しいルートを作成することはできますが、マークアップを共有する最善の方法は何ですか? 共通のマークアップを共有するためにパーシャルを使用する必要がありますか?

私が考えた 1 つの方法は、会社のプロパティを次のように設定するアクションを作成することでした。

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

ただし、ルートが以前にアクセスされていない限り、モデルがまだ設定されていない場合、modelFor は undefined を返します。これが良いアイデアかどうかはわかりません。

問題を示すこのフィドルを作成しました。

このような別のルートを作成することもできますが、どちらの状況もあまり良くありません。別の解決策は、コンテキストを設定するルートのセットアップ メソッドをオーバーライドすることです。

これはかなり一般的なシナリオであり、一般的な方法があればいいと思います。

4

0 に答える 0