Кто-нибудь знает, могут ли рассуждения, связанные с использованием долларовых методов и переменных в angularJS, инструктировать angularJS, чтобы не проверять эти значения, когда происходит переваривание? Итак, если angular встречается $scope.$value
и $scope.value
, то он избегает проверки первого, поскольку он имеет префикс символа доллара в его имени переменной?
AngularJS и его использование переменных доллара
Ответ 1
Есть несколько раз Угловая игнорирует переменные с префиксом доллара:
- В комментарии Шумли ниже, где json-фильтры не будут выводить их
-
При использовании директивы
{{ }}
угловые не будут отображать вложенные переменные$
. Например, это отображает толькоvisible
свойство.<div ng-init="n = { visible: 'foo', $ignore: 'bar' };">{{ n }}</div>
-
Кроме того, при добавлении явного наблюдателя в объект области видимости изменения свойств со знаками, знаками которых являются знак доллара, не будут вызывать наблюдателя. Смотрите эту обновленную скрипку.
-
angular.equals()
игнорирует ключи с префиксом$
.
Ответ 2
Это просто соглашение об именах из нижеприведенного фрагмента http://docs.angularjs.org/tutorial/step_05
'$' Соглашение о присвоении имен префиксов
Вы можете создавать свои собственные услуги и факт, мы сделаем именно это на шаге 11. Как соглашение об именах, angular встроенные службы, методы Scope и несколько других angularУ API есть префикс $$ перед именем. Не используйте префикс '$' при наименовании ваших услуг и моделей, чтобы избежать возможных именования коллизий.
http://docs.angularjs.org/guide/concepts#angular_namespace
Angular Пространство имен
Чтобы предотвратить случайное совпадение имен, angularпрефиксы имен объектов, которые потенциально могут столкнуться с $. Пожалуйста, не используйте префикс $в вашем коде, поскольку это может случайно сталкиваются с кодом angular.
Ответ 3
Префикс $
обозначает переменную, параметр, свойство или метод, который принадлежит ядру Angular.
Свойства объектов, которые возникают внутри фреймворка, но не являются частью API, могут начинаться с $
- или даже $$
- для обозначения метода или свойства private. Точно так же префикс _
часто используется в других библиотеках.
Это не влияет на то, как код интерпретируется средой выполнения, хотя сама структура может придать ей особое значение. В принципе, это соглашение об именах, в котором говорится: "Вы не должны возиться с этим".
Ответ 4
Не совсем уверен, но я верю, что внутренние элементы AngularJS полагаются на управление этими переменными $-prefixed во время дайджест. Проверка этих переменных будет означать, что дайджест никогда не стабилизируется, так как они могут постоянно меняться в течение каждого цикла дайджеста.
Не цитируйте меня, хотя.:)
Ответ 5
Я всегда думал, что $
выглядит как "S" для службы.
Ответ 6
Знаки доллара ($) также препятствуют повторению итерации (или интерпретации) элементов в определенных директивах.
Например, свойства, начинающиеся с $, не используются в ng-repeat
из-за аргумента if в цикле for:
if(collection.hasOwnProperty(key) && key.charAt(0) != '$')
Кто-то сделал вопрос о теме здесь, на странице угловых github
В методе shallowCopy
свойства, начинающиеся с $$, пропускаются из-за if, когда выполняется итерация свойств:
if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
Ответ 7
См. также это сообщение в блоге, в разница "$scope" и "scope" в angularjs...
Ответ 8
@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 лучше справляется с этим.
Ответ 9
Там огромная разница, не в переменных, а в параметрах, которые получает контроллер. Параметр области полностью отличается от объекта $scope.
Для получения дополнительной информации ознакомьтесь с этим полезным сообщением: http://www.thinkster.io/angularjs/aw9kWmdnik/angularjs-scope-vs-scope