Я много читал об использовании этих символов в реализации пользовательских директив в AngularJS, но концепция до сих пор мне не ясна. Я имею в виду, что это значит, если я использую одно из значений области в пользовательской директиве?
var mainApp = angular.module("mainApp", []);
mainApp.directive('modalView',function(){
return{
restrict:'E',
scope:'@' OR scope:'&' OR scope:'=' OR scope:'>' OR scope:true
}
});
Что именно мы делаем с прицелом здесь?
Я также не уверен, существует ли "scope: '>'" в официальной документации или нет. Это было использовано в моем проекте.
Edit-1
Использование "scope: '>'" было проблемой в моем проекте, и оно было исправлено.
@?
?<
он совместим не только с компонентами версии 1.5, но и с директивами. @Homer?
обозначает атрибут как необязательный .>
нет в документации.<
для односторонней привязки.@
привязка для передачи строк. Эти строки поддерживают{{}}
выражения для интерполированных значений.=
привязка для двусторонней привязки модели. Модель в родительской области видимости связана с моделью в изолированной области действия директивы.&
Связывание предназначено для передачи метода в область действия вашей директивы, чтобы его можно было вызывать в вашей директиве.Когда мы устанавливаем scope: true в директиве, Angular js создаст новую область для этой директивы. Это означает, что любые изменения, внесенные в область действия директивы, не будут отражены в родительском контроллере.
источник
<
односторонняя привязка=
двусторонняя привязка&
привязка функции@
передать только строкиисточник
Когда мы создаем директиву customer, область действия директивы может быть в изолированной области, это означает, что директива не разделяет область с контроллером; и директива, и контроллер имеют свою область видимости. Однако данные могут быть переданы в область действия директивы тремя возможными способами.
@
строкового литерала, передаваемого строкового значения, односторонней привязки.=
строкового литерала, проходного объекта, 2 способа привязки.&
строкового литерала, вызывать внешнюю функцию, передавать данные из директивы в контроллер.источник
Документация AngularJS по директивам довольно хорошо написана для обозначения символов.
Чтобы быть ясно, вы не можете просто иметь
в определении директивы. У вас должны быть свойства, к которым применяются эти привязки, например:
Я настоятельно рекомендую вам прочитать документацию и руководства на сайте. Существует гораздо больше информации, которую вы должны знать об изолированных областях и других темах.
Вот прямая цитата из вышеупомянутой ссылки, касающаяся значений
scope
:Получено 2017-02-13 из https://code.angularjs.org/1.4.11/docs/api/ng/service/ $ compile # -scope-, лицензировано как CC-by-SA 3.0
источник
У меня были проблемы с привязкой значения к любому из символов в AngularJS 1.6. Я не получил никакого значения, только
undefined
, хотя я сделал это точно так же, как другие привязки в том же файле, который работал.Проблема была в том, что имя моей переменной было подчеркнуто.
Это не удается:
Это работает:
(Не полностью относится к исходному вопросу, но это был один из лучших результатов поиска, когда я смотрел, так что, надеюсь, это поможет кому-то с той же проблемой.)
источник