AngularJS и его использование переменных доллара
кто-нибудь знает, если рассуждение об использовании методов доллара и переменных в angularJS состоит в том, чтобы проинструктировать angularJS, чтобы избежать проверки этих значений, когда происходит переваривание? Так что, если угловой попадается $scope.$value и $scope.value, то он будет избегать проверки первого, так как он имеет префикс с символом доллара в имени переменной?
9 ответов:
есть несколько раз угловые игнорирует переменные с префиксом в виде знака доллара:
- на Schumli комментарий ниже, где фильтры json не будут выводить их
при использовании
{{ }}директива, угловой не покажет вложенные$переменная. Например, это только отображаетvisibleсобственность.<div ng-init="n = { visible: 'foo', $ignore: 'bar' };">{{ n }}</div>кроме того, при добавлении явного наблюдателя на объект scope, изменения для свойств с ведущим знаком доллара этого объекта не будет вызывать наблюдатель. Смотрите эта обновленная скрипка.
angular.equals()игнорирует ключи с префиксом$.
Это просто соглашение об именах из приведенного ниже фрагмента http://docs.angularjs.org/tutorial/step_05
Соглашение Об Именовании Префиксов'$'
Вы можете создавать свои собственные сервисы, а также на самом деле мы сделаем именно это в шаге 11. Как соглашение об именовании, встроенные услуги angular, методы охвата и несколько других угловых API имеют префикс '$' перед именем. Не используйте префикс' $ при именовании ваших сервисов и моделей, во избежание возможные конфликты именования.http://docs.angularjs.org/guide/concepts#angular_namespace
Угловое Пространство Имен
Чтобы предотвратить случайное столкновение имен, угловой префиксы имен объектов, которые потенциально могут столкнуться с $. Пожалуйста, не используйте префикс в коде, как он может случайно столкнитесь с угловым кодом.
The
$префикс обозначает переменную, параметр, свойство или метод, который принадлежит ядру Angular.свойства объектов, которые возникают внутри фреймворка, но на самом деле не являются частью API, могут начинаться с
$или даже$$– для обозначения частная метод или свойство. Это точно так же, как_префикс часто используется в других библиотеках.это никак не влияет на то, как код интерпретируется средой выполнения, хотя сама структура может придать ей особый смысл. В принципе, это соглашение об именах, которое говорит: "Вы не должны связываться с этим".
не совсем уверен, но я считаю, что внутренние AngularJS полагаются на манипулирование этими переменными с префиксом $во время дайджеста. Проверка этих переменных будет означать, что дайджест никогда не стабилизируется, так как они могут постоянно меняться в течение каждого цикла дайджеста.
Не цитируйте меня на этом. :)
доллара США ($) знаки также предотвращают повторение (или интерпретацию) элементов в определенных директивах. Так, например, свойства, которые начинаются с $ не используются в
ng-repeatиз-за предложение if в цикле for:if(collection.hasOwnProperty(key) && key.charAt(0) != '$')кто-то сделал вопрос о теме здесь на странице angulars github
в методе
shallowCopyсвойства, которые начинаются с $$ пропускаются из-за предложение if при повторении свойств:if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
см. также это сообщение в блоге, на разница " $ scope "и" scope " в angularjs...
@MarcoS предоставил ссылку на https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope что объясняет разницу между $scope и scope. Я нашел это полезным, добавив к информации в других ответах.
в угловой директиве есть ссылка и контроллер. Ссылка представляет собой стандартную функцию с фиксированным набором параметров: область видимости, элемент, атрибуты объекта.
аргументы регулятора управляются угловым инжектором и не зависят от порядка. Инжектор решает, какие объекты передать, ища параметры, начинающиеся с $.
Автор https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope лучше объясняет это.
есть огромная разница, не в переменных, а в параметрах, которые получает контроллер. Параметр scope полностью отличается от параметра $scope.
для получения дополнительной информации, проверьте этот полезный пост:http://www.thinkster.io/angularjs/aw9kWmdnik/angularjs-scope-vs-scope
Comments