Keduanya memiliki kegunaannya. Pertama, beberapa sejarah ...
$ scope adalah teknik "klasik" sementara "controller as" jauh lebih baru (pada versi 1.2.0 secara resmi meskipun ia muncul dalam pra-rilis yang tidak stabil sebelum ini).
Keduanya bekerja dengan sangat baik dan satu-satunya jawaban yang salah adalah mencampurkannya di aplikasi yang sama tanpa alasan eksplisit. Terus terang, mencampurkannya akan berhasil, tetapi itu hanya akan menambah kebingungan. Jadi pilih satu dan gulingkan dengan itu. Yang paling penting adalah konsisten.
Yang mana? Itu tergantung kamu. Ada banyak lagi contoh di luar sana dari $ scope, tetapi "controller as" juga ikut ambil bagian. Apakah yang satu lebih baik dari yang lain? Itu bisa diperdebatkan. Jadi, bagaimana Anda memilih?
Kenyamanan
Saya lebih suka "controller as" karena saya suka menyembunyikan lingkup $ dan mengekspos anggota dari controller ke tampilan melalui objek perantara. Dengan mengatur ini. *, Saya dapat mengekspos apa yang ingin saya paparkan dari controller ke view. Anda dapat melakukannya dengan $ scope juga, saya hanya lebih suka menggunakan JavaScript standar untuk ini. Bahkan, saya kode seperti ini:
var vm = this;
vm.title = 'some title';
vm.saveData = function(){ ... } ;
return vm;
Ini terasa lebih bersih bagi saya dan memudahkan untuk melihat apa yang terpapar pada tampilan. Perhatikan saya beri nama variabel yang saya kembalikan "vm", yang merupakan singkatan dari viewmodel. Itu hanya konvensi saya.
Dengan $ scope saya bisa melakukan hal yang sama, jadi saya tidak menambahkan atau mengurangi tekniknya.
$scope.title = 'some title';
$scope.saveData = function() { ... };
Jadi terserah Anda di sana.
Injeksi
Dengan $ scope saya perlu menyuntikkan $ scope ke controller. Saya tidak harus melakukan ini dengan controller, kecuali saya membutuhkannya untuk alasan lain (seperti $ broadcast atau jam tangan, meskipun saya mencoba untuk menghindari jam tangan di controller).
UPDATE
Saya menulis posting ini tentang 2 pilihan:
http://www.johnpapa.net/do-you-like-your-angular-controllers-with-or-without-sugar/