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

Типы привязки данных AngularJS

Я знаю, что это старый и 100-часовой вопрос, но все становится более сложным с последними выпусками, что вызывает у меня много путаницы. Я хотел бы знать, что это разница между четырьмя доступными в настоящее время способами объявления привязки данных для атрибута в директиве. В частности:

  • @ Текстовое связывание
  • = Двусторонняя привязка
  • & Связывание метода (хотя кто-то называет его односторонней привязкой)
  • < Односторонняя привязка

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

4b9b3361

Ответ 1

Ниже приведена информация о новой односторонней привязке для области выделения.

Из GitHub: 1

Подвиг ($ компиляции):

добавить одностороннюю привязку к определению области выделения Это изменение позволяет разработчику связывать свойство scope/controller изоляции к выражению, используя привязку <, таким образом, что если значение изменения выражений, свойство scope/controller обновляется, но не обратное.

Связывание реализуется как единый простой чат, который также может обеспечить преимущества при использовании двухсторонних привязок.

Ответ 2

@ Связывание текста:

Это используется, если мы хотим предоставить любой статический текст для каждого экземпляра нашей директивы. Например, любой заголовок или конкретный компонент стиля/свойства, который должен быть передан в настраиваемую директиву, которая используется для создания диалога.

= Двусторонняя привязка:

Это обычная angular двусторонняя привязка данных. Например, любое живое обновление данных в диалоговом окне или любом пользовательском вводе (флажок, радио и т.д.) Может быть достигнуто с использованием этого.

& Связывание методов:

Как следует из названия, это в основном используется для вызова методов, определенных в родительском контроллере из директивы. Его также можно использовать для оценки выражения и привязки результата к области директив. Типичное использование может отвечать на пользовательские события, например, когда пользователь закрывает диалог.

< Односторонняя привязка:

Это, я думаю, было введено для ситуаций с более высокой производительностью, где нам не нужны никакие обновления из области действия директив, чтобы отразить охват родителей. Типичным сценарием использования может быть, когда нам нужно передать название, стиль, конфигурацию диалога (модальный/немодальный и т.д.) С помощью переменной, определенной в родительской области. Поскольку такие данные в основном не изменяются в рамках настраиваемой директивы (наш диалог с диалоговом окне), одностороннее связывание будет иметь более высокую производительность, чем двойная привязка. Это связано с тем, что цикл просмотра angular должен отслеживать только переменные области родительского контроля, а не директивы с односторонними привязанными переменными.

Примечание: Я не эксперт в AngularJS, и ответы, приведенные выше, лучше всего мне известны. Они могут ошибаться в глазах опытного парня angular. Прошу простить и исправить меня, если будут ошибки.

Официальные документы: https://docs.angularjs.org/api/ng/service/$compile#-scope-