Я пытаюсь изучить AngularJS, но есть одна вещь, с которой я не могу окутать голову.AngularJS isolate scope: & vs =
В чем преимущество использования "&" over "="? Все обучающие материалы, демонстрации и документация, которые я нашел, говорят мне, что & оценивает выражение в родительской области. Однако, когда я впервые попытался выполнить обратные вызовы с моим контроллером из моей директивы, я просто использовал привязку a = к функции в родительской области, и она работала нормально.
Например, с помощью функции по области видимости контроллера foo
, который принимает параметр bar
, я мог бы сделать заявление директивы как
scope: { callback: '=' },
template: '<div ng-click="callback(value)"></div>'
и включают в себя директиву как
<my-directive callback="foo"></my-directive>
Для достижения то же самое с &, мне кажется, что я должен сделать
scope: { callback: '&' },
template: '<div ng-click="callback({bar:value})"></div>'
и
<my-directive callback="foo(bar)"></my-directive>
Исходя из этого, я не вижу преимущество. Не поняли ли я &?
EDIT: Я полагаю полезное дополнение на мой вопрос: Является ли это плохая идея привязать к функции области видимости родительской используя = вместо &?
ли возможность выполнить выражение против контекста родителя выгоду для вас? см. мой ответ ниже. –
добавлено обновление с примером полезного сценария. –