Nasıl ve ne zaman Ember kullanmak için.Uygulama ve yöntemleri kayıt enjekte?
Ember kullanmak için nasıl anlamaya çalışıyorum.Uygulama register & inject yöntemleri
Kullanımı case bu fonksiyonları için tasarlanmış nelerdir? Nasıl ve ne zaman? kullanılacak bunlar
Gerçekten bilmek istiyorum!
CEVAP
Tıpkı varsayılan bağımlılık enjeksiyon yapar uygulamanızı kullanarak çoğunlukla kuralları, örneğin, eğer kullandığınız ember-veriler daha sonra bir örnek store
sınıf enjekte her route
controller
uygulama, böylece daha sonra bir başvuruyla sadece yaptığınız this.get('store')
içinde herhangi bir rota veya denetleyicisi.
Örneğin burada bir kod store
varsayılan kayıtlı (source alınan) nerede özüdür
Ember.onLoad('Ember.Application', function(Application) {
Application.initializer({
name: "store",
initialize: function(container, application) {
application.register('store:main', application.Store);
...
}
container.lookup('store:main');
}
});
Ve sonra enjekte (source)
Application.initializer({
name: "injectStore",
initialize: function(container, application) {
application.inject('controller', 'store', 'store:main');
application.inject('route', 'store', 'store:main');
application.inject('dataAdapter', 'store', 'store:main');
}
...
});
Diğer bir deyişle register
inject
bağımlılıklar kayıt enjekte ve kendini yöntemlerdir.
Farz edelim sen bir Session
nesneyi doldurduktan sonra bir sunucu isteği üzerine uygulama başlatın ve istediğiniz bir başvuru için her denetleyicisi, senin yapabileceğin bir şey gibi bu
var App = Ember.Application.create({
ready: function(){
this.register('session:current', App.Session, {singleton: true});
this.inject('controller', 'session', 'session:current');
}
});
App.Session = Ember.Object.extend({
sessionHash: ''
});
Bu kodu ister set session
özelliği her denetleyicisi örneği için bir singleton örneği App.Session
, bu yüzden herhangi bir kumanda yapmak this.get('session')
ve bir başvuru için, ve o zamandan beri tanımlanan bir singleton olurdu hep aynı session
nesne.
register
ile kontrolörleri, modeller, görünüm veya herhangi bir rasgele nesne türü kayıt olabilirsiniz. inject
, diğer yandan, tüm yükleyebilirlerörnekleribelirli bir sınıf. Örneğin inject('model', 'session', 'session:current')
modele session:current
örnek session
özelliği enjekte ederdi. session
nesne enjekte etmek için, hadi inject('view:index', 'session', 'session:current')
yapabilirsin IndexView
üzerine söylüyorlar.
Olsa register
inject
çok güçlü olmalısın bunları akıllıca kullanmak ve sadece bu durumda gerçekten biliyorum başka yol yok ulaşmak Amacınız, sanırım olmaması belgeleri bir gösterge için cesaretsizlik.
Güncelleme çalışan bir örnek olmadan iyi bir açıklama
Bir açıklama ile çalışmak bir örnek vermek gerekir çoğunlukla beri, şimdi oldu: http://jsbin.com/usaluc/6/edit. Fark nasıl örnek alabiliriz sadece erişim söz konusu sessionHash
tarafından başvuran için geçerli denetleyicisinin oturum nesnesi ile {{controller.session.sessionHash}}
Her yol vardır, bu liyakat yaptıklarımız tarafından kaydediliyor ve enjeksiyon App.Session
nesne her denetleyicisi uygulama.
Umarım yardımcı olur.
Açısal JS: Nasıl ng-click bir yol aram...
nasıl bir zaman dilimi kullanarak bir ...
Nasıl ember.js bir uygulama, bir mimar...
Nasıl Holo kullanmak için.Işık tema ve...
Nasıl EmberJS / Ember Veri tek bir rot...