Я разрабатываю colorpicker с Angular и пытаюсь включить некоторые из идей, которые я видел в других местах, чтобы написать выражение, которое будет вызываться всякий раз, когда пользователь выбирает цвет.Изменение родительской области для специальных переменных в угловых выражениях
<color-picker on-pick='something($color)'></color-picker>
Я заметил, что все встроенные в директивах использовать этот стиль рамки связывания, а не говорить, например, передавая функцию прямо на рамки.
<color-picker on-pick='something'></color-picker>
Примером этого стиля является ngRepeat:
<li ng-repeat='item in items' ng-bind='$index'></li>
Я понимаю, что выражение something($color)
будет оцениваться с родительской области, а не в рамках самой директивы, а это означает, что $color
имущество будет должны быть доступны в родительской области для правильной оценки.
Однако, если директива имеет область выделения, она не увидит родителя. Даже если это возможно, я не хочу вставлять переменную $color
в эту область.
В том же ключе я видел где-то, что привязка к сфере видимости с использованием &prop
будет оценивать выражение в родительской области, а не область действия директивы. Однако, если это так, как можно сделать вызовы вроде on-pick='something($color)'
, поскольку свойство $ color исходит из области действия директивы, тогда как функция something
будет находиться в родительской области?
Угловая документация для ngRepeat относится к этим переменным как «специальные переменные», однако взгляд на источник показывает, что они назначены на область, сгенерированную из некоторой системы отображения блоков. Я изо всех сил старался проследить мимо.
Ах, да. Поэтому, когда вы вызываете свойство, связанное с областью с помощью '&', первый аргумент является объектом области видимости? Что может быть просто областью действия? –
Первый (и только?) Аргумент является объектом параметров, которые вы передаете функции обработчика. Вы должны иметь возможность передать всю область действия директивы –
@DanPrince, ответил ли ответ на ваш вопрос иначе? –