AngularJS и его использование переменных доллара



кто-нибудь знает, если рассуждение об использовании методов доллара и переменных в angularJS состоит в том, чтобы проинструктировать angularJS, чтобы избежать проверки этих значений, когда происходит переваривание? Так что, если угловой попадается $scope.$value и $scope.value, то он будет избегать проверки первого, так как он имеет префикс с символом доллара в имени переменной?

423   9  

9 ответов:

есть несколько раз угловые игнорирует переменные с префиксом в виде знака доллара:

  1. на Schumli комментарий ниже, где фильтры json не будут выводить их
  2. при использовании {{ }} директива, угловой не покажет вложенные$ переменная. Например, это только отображает visible собственность.

    <div ng-init="n = { visible: 'foo', $ignore: 'bar' };">{{ n }}</div>
    
  3. кроме того, при добавлении явного наблюдателя на объект scope, изменения для свойств с ведущим знаком доллара этого объекта не будет вызывать наблюдатель. Смотрите эта обновленная скрипка.

  4. angular.equals()игнорирует ключи с префиксом $.

Это просто соглашение об именах из приведенного ниже фрагмента http://docs.angularjs.org/tutorial/step_05

Соглашение Об Именовании Префиксов'$'
Вы можете создавать свои собственные сервисы, а также на самом деле мы сделаем именно это в шаге 11. Как соглашение об именовании, встроенные услуги angular, методы охвата и несколько других угловых API имеют префикс '$' перед именем. Не используйте префикс' $ при именовании ваших сервисов и моделей, во избежание возможные конфликты именования.

http://docs.angularjs.org/guide/concepts#angular_namespace

Угловое Пространство Имен
Чтобы предотвратить случайное столкновение имен, угловой префиксы имен объектов, которые потенциально могут столкнуться с $. Пожалуйста, не используйте префикс в коде, как он может случайно столкнитесь с угловым кодом.

The $ префикс обозначает переменную, параметр, свойство или метод, который принадлежит ядру Angular.

свойства объектов, которые возникают внутри фреймворка, но на самом деле не являются частью API, могут начинаться с $ или даже $$ – для обозначения частная метод или свойство. Это точно так же, как _ префикс часто используется в других библиотеках.

это никак не влияет на то, как код интерпретируется средой выполнения, хотя сама структура может придать ей особый смысл. В принципе, это соглашение об именах, которое говорит: "Вы не должны связываться с этим".

не совсем уверен, но я считаю, что внутренние AngularJS полагаются на манипулирование этими переменными с префиксом $во время дайджеста. Проверка этих переменных будет означать, что дайджест никогда не стабилизируется, так как они могут постоянно меняться в течение каждого цикла дайджеста.

Не цитируйте меня на этом. :)

Я всегда думал, что $ выглядит как "S" для обслуживания.

доллара США ($) знаки также предотвращают повторение (или интерпретацию) элементов в определенных директивах. Так, например, свойства, которые начинаются с $ не используются в 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

    Ничего не найдено.