SORU
13 AĞUSTOS 2013, Salı


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
13 AĞUSTOS 2013, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011
  • rtisticsdev

    rtisticsdev

    31 Mayıs 2012
  • The Weavers of Eternity Paracord Tutorials

    The Weavers

    1 Ocak 2014