まず、あなたへのメリー クリスマス。提案を手伝ってくれてありがとう。
私の質問はまだ emberjs 名前空間に関するものですが、今回は複数の rails-engine に含まれる複数の emberjs アプリのスイートのコンテキストで、各 emberjs アプリは独自のコントローラー、モデル、ビュー、およびルーターを備えたスタンドアロン アプリです。ただし、ember データの関連付けを共有する必要があります。これらの rails-engines は、それぞれのエンジンがアプリの主要な機能を表す main-rails アプリに含まれます。
このjsfiddleでは、名前空間への 3 つのアプローチを思いつきましたが、どれが emberjs の方法であるかを知りたいです。
**Approach 1**
//独自の名前空間を持つ各 emberjs アプリ
MainRailsApp = Ember.Application.create();
RailsEngine = Ember.Namespace.create();
RailsEngine2 = Ember.Namespace.create();
MainRailsApp.Store= DS.Store.extend(); **inherits from Ember.Application**
MainRailsApp.Router = Em.Router.extend() **inherits from Ember.Application**
console.log(RailsEngine.toString()); //RailsEngine
console.log(RailsEngine2.toString()); //RailsEngine2
RailsEngine.Model = DS.Model.extend
RailsEngine2.model = DS.Model.extend
異なる名前空間から継承していますが、このモデルの関連付けを共有できますか
Contact.Model = RailsEngine.Model.extend({
address: DS.attr('string'),
user: DS.belongsTo('User.Model')
});
User.Model = RailsEngine2.Model.extend({
name: DS.attr('string'),
contacts: DS.hasMany('Contact.Model'),
});
**Approach 2**
//すべての異なる emberjs アプリは 1 つの名前空間を共有しますが、インスタンスは異なります
Yp = Ember.Namespace.extend();
UserRailsEngine = Yp.create();
ContactRailsEngine = Yp.create();
PaymentRailsEngine = Yp.create();
Yp.Jk = Ember.Application.extend();
Yp.Jk.create();
Yp.Router = Em.Router.extend(); **inherits from the Ember.Namespace**
Yp.Store = DS.Store.extend({ }); **inherits from the Ember.Namespace**
console.log(UserRailsEngine.toString()); //UserRailsEngine
console.log(PaymentRailsEngine.toString()); //PaymentRailsEngine
UserRailsEngine.Model = DS.Model.extend
ContactRailsEngine.Model = DS.Model.extend
このモデルは関連付けを共有できますか? 名前空間は 1 つですが、インスタンスは異なります
Contact.Model = ContactRailsEngine.Model .extend({
address: DS.attr('string'),
user: DS.belongsTo('User.Model')
});
User.Model = UserRailsEngine.Modelextend({
name: DS.attr('string'),
contacts: DS.hasMany('Contact.Model')
});
**Approach 3**
//1 つの名前空間ですが、各 emberjs アプリの名前空間の複数のサブクラス
Mynamespace = Ember.Namespace.extend();
Order = Mynamespace.extend();
OrderRailsEngine = Order.create();
Event = Mynamespace.extend();
EventRailsEngine = Event.create();
console.log(OrderRailsEngine.toString()); //OrderRailsEngine
console.log(EventRailsEngine.toString()); //EventRailsEngine
**Additional questions**
1. 3 つのアプローチすべてで、hasMany と belongsTo を使用して ember-data モデルを関連付けることはできますか?
ルーターがどうなるかはまだわかりません。main-app とそれぞれの rails-engine の名前空間がシームレスに動作するようにするにはどうすればよいと思いますか?
各 ember-data モデルは各エンジンに名前空間が割り当てられるため、ember-data DS.Store 名前空間を処理する方法に関するあなたの提案は何ですか?エンジン。
Ember.Application が自動初期化されるように、Ember.Namespace は自動初期化されます。
代替パターンは大歓迎です。
お時間をいただきありがとうございました。