Bazı ortak denetimlere sahip bazı denetleyicilere sahibim, özellikle birkaç denetleyici için aynı olan bir $scope.$watch
. Bu kodu ayrı bir dosyaya nasıl koyabilirim ve bu $watch
'un gereksinim duyduğu çeşitli denetleyicilerindeki ortak kodu içe aktarabilir miyim?AngularJS denetleyicileri: Dosyayı ayırmak için ortak kodu taşıyın
cevap
Sen senin kontrolörün kapsamında geçirerek bir hizmeti kullanabilirsiniz:
angular.module('app').service("CommonFunctions", ['SomeService', function(SomeService) {
var commonFunctions = {};
commonFunctions.init = function(scope){
scope.$watch(function(){},function(){})
};
return commonFunctions;
}]);
angular.module('app').controller('Ctrl1',
['$scope','CommonFunctions',function($scope,CommonFunctions) {
CommonFunctions.init($scope);
}]);
angular.module('app').controller('Ctrl2',
['$scope','CommonFunctions',function($scope,CommonFunctions) {
CommonFunctions.init($scope);
}]);
Bu şekilde tek tek kontrolörün kapsamı kullanarak, ancak bir hizmet içinde ortak bir yöntem kullanıyoruz. Denetleyici kapsamlarına gerçekten eklenen bir hizmetten genel işlev istiyorsanız, bir denetleyicide angular.extend($scope, AService)
'u da kullanabilirsiniz. İşte
çalışan Fiddle var: http://jsfiddle.net/rhcjdb7L/
Tabii çok serin ve tüm, ama $rootscope.$broadcast()
kullanmak istemediğine emin misin? Bu oldukça iyi yazılmış: http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/
$ kapsamını genişletme noktasını göremiyorum. Zaten bir servisin var. Sadece 'CommonFunctions.init ($ kapsamı)' olarak adlandırın – cgTag
Haklısınız, 'extend()' bu durumda overkill çünkü herhangi bir nedenle $ kapsamı içinde bu işleve ihtiyacınız yok. Cevabımı değiştirdim. –
Teşekkürler çocuklar :) – EricC
- 1. Uitabbar denetleyicisinin tüm görünüm denetleyicileri için ortak sınıf nasıl kullanılır?
- 2. Webpack: giriş ve alt yığınlardan ortak modülleri ayırmak için ortak modülleri ayıklayın
- 3. Tek bir angularjs dosyasından tüm denetleyicileri çağırmak
- 4. AngularJS - ngRoute dosyayı bulamıyor
- 5. Denetleyicileri oluşturmak için angular.module kullanmanın yararı nedir?
- 6. AngularJS ortak denetleyici işlevi - gerektiğinde karıştırın veya $ rootScope üzerinde tanımlayın?
- 7. Bir dosyayı yeni bir klasöre taşıyın Git geçmişini koruyarak
- 8. Dosyayı bir düzenleyici penceresinden diğerine taşıyın (bölme modu)
- 9. Ortak Tarayıcı için Javascript kodu Chrome Tarayıcıda çalışmıyor
- 10. Denetleyicileri bildirmek için Açısal Düzenleme
- 11. R vektörlere bir aralık ayırmak veya ayırmak
- 12. listeleri ayırmak ve bulmak için sözlüklerde listesinden değerlerini ekleyin/ben böyle sözlükleri içeren bir liste var ortak değerleri
- 13. Kubernetes Joker karakter URL'leri için giriş denetleyicileri
- 14. Denetleyicileri dinamik olarak derlemek için Roslyn kullanın
- 15. Uyumsuz değerleri ayırmak için türleri nasıl kullanırım
- 16. PHP'yi kullanarak site içeriğini ayırmak için
- 17. ng seçenekli diziyi ayırmak için ayrılmış seçin
- 18. Basit Python Regex kelimeleri ayırmak için
- 19. Raylarda denetleyicileri temizleme 2
- 20. Uygulamadaki tüm denetleyicileri bulma
- 21. .htaccess içeriğini vhost'a taşıyın, performans için
- 22. Yapıcıları ve devralmayı taşıyın
- 23. Minitest ile denetleyicileri sınama
- 24. Nesneyi oynatıcıya taşıyın
- 25. Paket Denetleyicileri 4
- 26. Oluşturucu Taşıyın, std :: move kullanarak vektörü iki nesne arasında taşıyın.
- 27. . Net için ortak utils kitaplığı
- 28. Unary Operatörleri için Ortak Uygulama
- 29. Uygulamayı telefona taşıyın
- 30. Küresel istisnaları VB'ye taşıyın
bunun için çalışabilir mi? – worldask
Bir hizmet kapsamının mümkün olmadığından eminim ... – EricC
@EricC $ kapsamı, yalnızca bir hizmet işlevi için bir parametre olabilir. – cgTag