--- Bu cevabın bu soru için olmadığını biliyorum, ama bu soruyu okuyan ve Fabrikalar gibi Hizmetleri ele almak isteyen insanların bunu yapmaktan kaçınmasını istiyorum ----
Bunun için bir Servis veya Fabrika kullanmanız gerekecektir.
Hizmetler, iç içe olmayan denetleyiciler arasında veri paylaşmak için EN İYİ UYGULAMADIR .
Bu konuda veri paylaşımı ile ilgili çok iyi bir açıklama nesnelerin nasıl bildirileceği. Şanssızdım çünkü okumadan önce bir AngularJS tuzağına düştüm ve çok sinirliydim. Bu sorunu önlemenize yardımcı olalım.
"Ng-book: AngularJS ile ilgili eksiksiz kitap" ı kontrolörlerde çıplak veri olarak oluşturulan AngularJS ng modellerinin YANLIŞ olduğunu okudum!
Bir $ scope öğesi şu şekilde oluşturulmalıdır:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// best practice, always use a model
$scope.someModel = {
someValue: 'hello computer'
});
Ve böyle değil:
angular.module('myApp', [])
.controller('SomeCtrl', function($scope) {
// anti-pattern, bare value
$scope.someBareValue = 'hello computer';
};
});
Bunun nedeni, DOM (html belgesi) için çağrıları şu şekilde içermesi önerilir (EN İYİ UYGULAMA)
<div ng-model="someModel.someValue"></div> //NOTICE THE DOT.
Alt denetleyicinizin bir nesneyi üst denetleyiciden değiştirebilmesini istiyorsanız, iç içe denetleyiciler için çok yararlıdır ....
Ancak sizin durumunuzda iç içe kapsamlar istemezsiniz, ancak nesneleri hizmetlerden denetleyicilere almak için benzer bir yön vardır.
Diyelim ki hizmetiniz 'Fabrika' ve dönüş alanında objectC içeren objectB içeren bir objectA var.
Denetleyicinizden objectC'yi kapsamınıza almak istiyorsanız, aşağıdakileri söylemek yanlıştır:
$scope.neededObjectInController = Factory.objectA.objectB.objectC;
Bu işe yaramaz ...
Bunun yerine sadece bir nokta kullanın.
$scope.neededObjectInController = Factory.ObjectA;
Daha sonra DOM'da objectC'den objectC'yi çağırabilirsiniz. Bu, fabrikalarla ilgili en iyi uygulamadır ve en önemlisi, beklenmedik ve yakalanamayan hatalardan kaçınmaya yardımcı olacaktır.