Ben angularjs için yeni ve benim ilk kullanıcı yapılandırması yükleyen bir hizmeti diğer fonksiyonlar önce servis işlevini çalıştırmakangularjs
angular.module('myApp').service('myService', ['$http', function ($http) {
var self = this;
self.user = {};
self.loadConfiguration = function() {
$http.get('/UserConfig').then(function (result) {
self.user = result.data;
});
};
self.loadConfiguration();
}]);
Ben bu hizmetin
angular.module('myApp').controller('myController', ['$scope', 'myService', function ($scope, myService) {
var self = this;
// calculation based on service value
self.something = myService.user.something * something else;
}]);
gelen yapılandırmayı kullanan bir denetleyici var Burada sorun, bu kod çağrıldığında AJAX isteğinin tamamlanamaması nedeniyle myService.user.something undefined olabilir. Başka bir kod çalıştırılmadan önce hizmetin tamamlanmasını sağlamanın bir yolu var mı? 'LoadConfiguration' hizmet işlevinin, yalnızca ona bağlı olan denetleyicilerin sayısına bakılmaksızın çalıştırılmasını istiyorum.
Cevabınız çoğunlukla işe yarıyor. Hizmetin denetleyicinin başlatılmasından önce yüklenmiş olması durumunda çalışmaz, çünkü $ kapsamı. $ On ('myService: getUserConfigSuccess') asla yanmaz. –
@ user1 Ahhhh, evet! Bu nedenle, emin olmak istiyorsanız, 'loadConfiguration()' işlevini denetleyicinizden çağırabilir veya denetleyiciye "user" yüklüyse bir kontrol ekleyebilirsiniz (eğer varsa, kullanın; eğer değilse, bir olay dinleyicisi ekleyin). –
Evet, işim bitti. :) Bundan birkaç ay sonra okuyan herkese yardımcı olmak için kabul edilen cevapların bir kaydını bırakmak istedim. –