Обидва мають своє використання. По-перше, якась історія ...
$ range - це "класична" методика, в той час як "Controller as" набагато пізніший (за версією 1.2.0 офіційно, хоча до цього вона з'являлася в нестабільних попередніх випусках).
Обидва працюють прекрасно, і єдина неправильна відповідь - змішати їх в одній програмі без явної причини. Відверто кажучи, змішування їх спрацює, але це просто додасть плутанини. Тому виберіть один і закатайте з ним. Найголовніше - бути послідовним.
Який? Це залежить від вас. Є ще багато прикладів, що мають розмір $, але "контролер як" також набирає пар. Чи один кращий за інший? Це дискусійно. То як ви обираєте?
Комфорт
Я вважаю за краще "контролер як", тому що мені подобається приховувати область $ і піддавати членів від контролера перегляду через посередницький об'єкт. Встановивши це. *, Я можу викрити лише те, що хочу піднести від контролера до перегляду. Ви можете це робити і з $ range, я просто вважаю за краще використовувати для цього стандартний JavaScript. Насправді я кодую це так:
var vm = this;
vm.title = 'some title';
vm.saveData = function(){ ... } ;
return vm;
Це відчуває мене більш чистою і дозволяє легко побачити те, що піддається погляду. Зауважте, я називаю змінну, яку я повертаю "vm", яка розшифровується як viewmodel. Це лише моя умовність.
З $ range я можу робити те ж саме, тому я не додаю та не применшую техніку.
$scope.title = 'some title';
$scope.saveData = function() { ... };
Тож саме від вас залежить.
Ін'єкція
За допомогою $ range мені потрібно вводити $ range в контролер. Мені це не доводиться робити з контролером, якщо тільки мені це не потрібно з якоїсь іншої причини (наприклад, $ трансляція або годинник, хоча я намагаюся уникати годин у контролері).
ОНОВЛЕННЯ
Я написав цей пост про два варіанти:
http://www.johnpapa.net/do-you-like-your-angular-controllers-with-or-without-sugar/