en Öyletüketmek kontrolörleri ile değerlerini paylaşmaz bir hizmet nesnesi nasıl yapılır
myApp.factory('myService', function() {
return {
counter: 0,
increment: function() {
console.log('counter: ' + (this.counter++))
}
};
});
gibi bir fabrika, hizmet veya sağlayıcı nesne oluşturmak varsayalım Ve bağlı olan bir denetleyici olduğunu varsayalım üzerinde
myApp.controller('myCtrl', function(myService) {
$scope.incr = function() {
myService.increment();
};
}
Ve html
<div ng-controller="myCtrl">
<button ng-click="increment()">increment</button>
</div>
...
<div ng-controller="myCtrl">
<button ng-click="increment()">increment</button>
</div>
farklı yerlerinde bu denetleyici uygulamakŞu anda, her bir düğmeye bastığımda, sayaç evrenseldir ve 0, 1, 2, 3, ...
Her bir denetleyicinin alması için fabrikamı, hizmeti veya sağlayıcımı nasıl yazabilirim? servis nesnesinin farklı kopyası?
Tüm hizmetler singletons vardır. İstediğiniz, hizmetinizi oluşturmak için kullanabileceğiniz bir fabrika servisidir. Örneğin. MyServiceFactory, bunu denetleyiciye enjekte edin ve bir "myService" oluşturmak için bir yöntemi olmasına izin verin. – Yoshi
Merhaba @Yoshi. Evet, tüm servislerin singleton olduğunu okudum, bu yüzden ayrı örnekler yaratmakta zorlanıyorum. Bir fabrika servisi oluşturarak ve kontrolöre enjekte ederek ne demek istediğini açıklayabilir misiniz? Örneğimde yaptığım bu değil miydi? – kane
Gerçekten değil. Enjeksiyonla paylaşılan somut bir hizmet kullandınız. Denetleyicide kullanılacak bir “myService” için kendi oluşturma yönteminizi sağlayacağınız başka bir hizmete (yukarıda belirtilen fabrika veya benzeri) ihtiyacınız vardır. Örneğin. 'var myService = MyServiceFactory.createService();' – Yoshi