Her ikisinin de kullanımları vardır. İlk olarak, biraz tarih ...
$ scope "classic" tekniğidir, "controller as" ise çok daha yenidir (1.2.0 sürümünden itibaren resmen bundan önceki kararsız sürümlerde görünmesine rağmen).
Her ikisi de mükemmel çalışır ve tek yanlış cevap, onları açık bir neden olmadan aynı uygulamada karıştırmaktır. Açıkçası, onları karıştırmak işe yarayacak, ama sadece karışıklığa katkıda bulunacak. Öyleyse birini seç ve onunla yuvarlan. En önemli şey tutarlı olmaktır.
Hangisi? Bu sana bağlı. Orada $ scope daha birçok örnek var, ama "denetleyici as" buhar da alıyor. Biri diğerinden daha iyi mi? Bu tartışılır. Yani, nasıl seçiyorsun?
Konfor
Ben "denetleyici olarak" tercih çünkü $ kapsam gizleme ve bir denetleyici nesnesi aracılığıyla denetleyiciden görünüme üyeleri maruz seviyorum. Bunu ayarlayarak. *, Denetleyiciden görünüme göstermek istediğim şeyi gösterebilirim. Bunu $ scope ile de yapabilirsiniz, sadece bunun için standart JavaScript kullanmayı tercih ederim. Aslında, ben böyle kod:
var vm = this;
vm.title = 'some title';
vm.saveData = function(){ ... } ;
return vm;
Bu bana daha temiz geliyor ve görünüme neyin maruz kaldığını görmeyi kolaylaştırıyor. Uyarı "vm" döndürdüğüm değişkeni adlandırıyorum, bu da viewmodel anlamına gelir. Bu sadece benim konvansiyonum.
$ Kapsamı ile ben de aynı şeyleri yapabilirim, bu yüzden tekniği ekleme veya küçültme değil.
$scope.title = 'some title';
$scope.saveData = function() { ... };
Yani orada size kalmış.
Enjeksiyon
$ Scope ile denetleyiciye $ scope enjekte etmem gerekiyor. Bunu başka bir nedenden dolayı ($ yayın veya saatler gibi, kontrolördeki saatlerden kaçınmaya çalışıyorum) sürece kontrolörle yapmak zorunda değilim.
GÜNCELLEME
Bu yazıyı 2 seçenek hakkında yazdım:
http://www.johnpapa.net/do-you-like-your-angular-controllers-with-or-without-sugar/