Beide haben ihre Verwendung. Zunächst etwas Geschichte ...
$ scope ist die "klassische" Technik, während "controller as" viel neuer ist (ab Version 1.2.0 offiziell, obwohl es zuvor in instabilen Vorabversionen erschienen ist).
Beide funktionieren einwandfrei und die einzige falsche Antwort ist, sie ohne expliziten Grund in derselben App zu mischen. Ehrlich gesagt wird das Mischen funktionieren, aber es wird nur zur Verwirrung beitragen. Also wählen Sie eine aus und rollen Sie damit. Das Wichtigste ist, konsequent zu sein.
Welcher? Das hängt von dir ab. Es gibt noch viele weitere Beispiele für $ scope, aber auch "controller as" nimmt Fahrt auf. Ist einer besser als der andere? Das ist umstritten. Wie wählst du?
Komfort
Ich bevorzuge den "Controller als", weil ich den $ scope gerne verstecke und die Mitglieder vom Controller über ein Zwischenobjekt der Ansicht aussetze. Durch Einstellen dieser Option. * Kann ich genau das anzeigen, was ich vom Controller für die Ansicht verfügbar machen möchte. Sie können dies auch mit $ scope tun. Ich bevorzuge nur die Verwendung von Standard-JavaScript. Tatsächlich codiere ich es so:
var vm = this;
vm.title = 'some title';
vm.saveData = function(){ ... } ;
return vm;
Das fühlt sich für mich sauberer an und macht es einfach zu sehen, was der Sicht ausgesetzt ist. Beachten Sie, dass ich die Variable, die ich zurückgebe, "vm" nenne, was für viewmodel steht. Das ist nur meine Konvention.
Mit $ scope kann ich die gleichen Dinge tun, also füge ich die Technik nicht hinzu oder lenke sie nicht ab.
$scope.title = 'some title';
$scope.saveData = function() { ... };
Es liegt also an Ihnen.
Injektion
Mit $ scope muss ich $ scope in den Controller einfügen. Ich muss dies nicht mit Controller als tun, es sei denn, ich brauche es aus einem anderen Grund (wie $ Broadcast oder Uhren, obwohl ich versuche, Uhren im Controller zu vermeiden).
UPDATE
Ich habe diesen Beitrag über die 2 Auswahlmöglichkeiten geschrieben:
http://www.johnpapa.net/do-you-like-your-angular-controllers-with-or-without-sugar/