首先給你一個聖誕快樂,謝謝你的建議。命名空間多重或套裝的應用程序的最佳途徑
我的問題仍然在emberjs命名空間,但這次是在多套emberjs應用程序的上下文中,這些應用程序將包含在多個rails-engine中,以便每個emberjs應用程序都是獨立的應用程序,並帶有自己的控制器,視圖和路由器。但是,他們仍然需要共享燼數據關聯。這些導軌引擎將包含在主導軌應用程序中,其中每個引擎代表應用程序的主要功能。
在這種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應用共享一個命名空間,但不同情況下
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
能這款車型共享協會,他們有一個命名空間,但不同的實例
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**
//每個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模型。
我仍然不確定如何處理路由器。你認爲命名空間應該在主應用程序和每個rails-engine中,以便它們仍能無縫工作。
關於如何處理ember-data DS.Store命名空間的建議,因爲每個ember-data模型都將命名爲每個引擎,我仍然希望ember-data DS.Store能夠識別和處理不同的emberjs模型包含在引擎中。
Ember.Namespace是否自動初始化,就像Ember.Application是自動初始化的。
歡迎使用其他圖案。
非常感謝您的時間。