mi?
Hayır, bu iyi bir uygulama değildir. Global değişkenleri kullanmaktan kaçınmalısınız. Çerçeve bunu mümkün kılmak için çok şey yapar - kendinizi global bir değişken olarak düşünürseniz en iyi çözüm, bir şeyin yeniden gözden geçirilmesi gerektiğini gösteren bir işarettir. Çoğu durumda doğru yer kontrolördedir. Örneğin, CurrentUser olabilir:
//a property of application controller
App.ApplicationController = Ember.Controller.extend({
currentUser: null
});
//or it's own controller
App.CurrentUserController = Ember.ObjectController.extend({});
Nasıl güncellemek ve uygulamada kullanılan tüm kontrolörler gelen CurrentUser özelliğine erişmek için?
needs
özelliğini kullanın. CurrentUser uygulamasını ApplicationController özelliği olarak bildirdiğinizi varsayalım. Böyle PostsController ulaşılabilir:
App.PostsController = Ember.ArrayController.extend{(
needs: ['application'],
currentUser: Ember.computed.alias('controllers.application.currentUser'),
addPost: function() {
console.log('Adding a post for ', this.get('currentUser.name'));
}
)}
sadece yerel denetleyicisi üzerinden erişilebilir hale getirmek için needs
kullanın görünümü/şablondan CurrentUser erişmeniz gerekiyorsa. Ve bir rotadan ona ihtiyacınız varsa, rotanın controllerFor yöntemini kullanın.
Bazı uygulama düzeyinde boole özellikleri var ve bu özellikler hemen hemen tüm görünümlerde/şablonlarda kullanılacaktır. Eğer onları "applicationController" içinde tanımlarım varsa, o zaman tüm kontrollerde 'needs' özelliği tanımlamak zorundayım. Onları App içinde tanımlarım ve sonra 'ihtiyaç' gerekmiyor. Bunun hakkında bir fikrin var mı? – Manoharan
Uygulama düzeyinde birkaç boolean özelliğini ayarlamak için bir argüman görebiliyorum, çünkü imber kendisi LOG_TRANSITIONS'ı tanımlar. Daha karmaşık bir şey, kendi kontrolöründe bulunmalıdır. Bir denetleyicinin diğerlerinde bulunmasını istediğiniz bir durumdaysanız, diğerlerine enjekte etmek için bir başlatıcı kullanabilirsiniz. "CurrentUserController" öğesini tüm denetleyicilerin 'currentUser' özelliği olarak kullanan bir örnek için http://mcdowall.info/posts/ember-application-initializers/ adresine bakın. ConfigController ile kolayca yapılabilir. –
Ember.Computed Ember.computed – Nath