Кто-нибудь знает, является ли причина использования долларовых методов и переменных в angularJS в том, чтобы инструктировать angularJS избегать проверки этих значений, когда происходит переваривание? Итак, если встречается angular $scope.$value
и $scope.value
, тогда он будет избегать проверки первого, поскольку он имеет префикс символа доллара в имени переменной?
128
$scope
, а у директивы естьscope
. WTF?Ответы:
Angular несколько раз игнорирует переменные с префиксом доллара:
При использовании
{{ }}
директивы angular не будет отображать вложенные$
переменные. Например, здесь отображается толькоvisible
свойство.Кроме того, при добавлении явного наблюдателя к объекту области изменения свойств со знаком доллара в начале этого объекта не будут запускать наблюдателя. Смотрите эту обновленную скрипку .
angular.equals()
игнорирует ключи с префиксом$
.источник
Это просто соглашение об именах из приведенного ниже фрагмента http://docs.angularjs.org/tutorial/step_05
http://docs.angularjs.org/guide/concepts#angular_namespace
источник
$scope
в контроллере, аscope
в директиве? --- [1] docs.angularjs.org/guide/directive$
Префикс обозначает переменную, параметр, свойство или метод , который принадлежит к ядру угловой.Свойства объектов, которые происходят внутри платформы, но фактически не являются частью API, могут начинаться с
$
- или даже$$
- для обозначения частного метода или свойства. Таким же образом_
префикс часто используется в других библиотеках.Это не влияет на способ интерпретации кода средой выполнения, хотя сам фреймворк может придавать ему особое значение. По сути, это соглашение об именах, которое гласит: «Не стоит связываться с этим».
источник
$$__$_$
- это просто идентификатор, не имеющий особого значения для интерпретатора.Не совсем уверен, но я считаю, что внутреннее устройство AngularJS полагается на управление этими переменными с префиксом $ во время дайджеста. Проверка этих переменных будет означать, что дайджест никогда не стабилизируется, поскольку они могут постоянно меняться в течение каждого цикла дайджеста.
Но не цитируйте меня по этому поводу. :)
источник
Я всегда считал, что
$
выглядит как «S» за обслуживание.источник
Знак доллара ( $ ) также предотвращает повторение (или интерпретацию) элементов в определенных директивах. Так, например, свойства, начинающиеся с $ , не используются
ng-repeat
из-за предложения if в цикле for :Кто-то поднял вопрос по теме здесь, на странице angulars github
В
shallowCopy
свойствах метода , начинающихся с $$ , пропускаются из-за предложения if при повторении свойств :источник
@MarcoS предоставил ссылку на https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope которая объясняет разницу между $ scope и scope. Я нашел это полезным, добавив к информации в других ответах.
В директиве angular есть ссылка и контроллер. Ссылка представляет собой стандартную функцию с фиксированным набором параметров: область действия, элемент, объект атрибутов.
Аргументы контроллера управляются инжектором Angular и не зависят от порядка. Инжектор решает, какие объекты передать, ища параметры, начинающиеся с $.
Автор https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope лучше объясняет это.
источник
Огромная разница не в переменных, а в параметрах, которые получает контроллер. Параметр области полностью отличается от параметра $ scope.
Для получения дополнительной информации ознакомьтесь с этим полезным сообщением: http://www.thinkster.io/angularjs/aw9kWmdnik/angularjs-scope-vs-scope
источник