Подтвердить что ты не робот

$ scope vs var в AngularJS

Я использую var и $scope.varname, и оба работают отлично в AngularJS. Мне было интересно, была ли разница между этими двумя функционально, и какова была лучшая практика, в которой можно использовать?

4b9b3361

Ответ 1

Да! $scope переменные связываются с представлением, где var не является и является локальным для функции, которую она объявила в!

var x = 3;
$scope.y = 3;

{{x}} - undefined
{{y}} - 3

Ответ 2

1 - $scope - это клей между вашим контроллером и вашим представлением/моделью, когда вы определяете переменную/функцию для $-области контроллера, весь ваш вид, который этот контроллер контролирует это!, может видеть эту переменную/функцию. Если чистая переменная работает только в этом контроллере, даже не вид этого контроллера!

2- Каждая вещь, которая была определена в области $scope, manupulatable извне контроллера, в Директивах, Сервисы, ваш html view..., а чистая переменная НЕ;

Ответ 3

Технические последствия использования var и $scope были описаны @tymeJV и другими. Я думаю, следующий логический вопрос: когда я могу использовать?

TL; DR - если вы не используете переменную в представлении (например, {{myVar}}), используйте var.

Причина в два раза:

  • Инкапсуляция - скрыть состояние, которое не является необходимым для представления. Это предотвратит непреднамеренные модификации переменной.

  • Производительность (исключить дополнительные циклы дайджестов) - Angular выполняет проверку "грязного состояния" на переменных. Изменение переменной, которая не используется в представлении, может привести к излишним циклам переваривания. В приложении с парой ng-repeat и множеством часов это может иметь огромное влияние.

Ответ 4

Проще говоря - все переменные, которые вы определяете в области $scope, например. в вашем контроллере, доступны в вашей разметке html. в случае, если вам нужна переменная только внутри ваших js-функций, вы можете объявить ее с помощью var, они доступны только локально. То же самое с функциями.

Ответ 5

$scope привязывает значение к представлению, а var - это локальная переменная для приложения.