Угловая: вызов функции controllerа внутри функции директивной ссылки с использованием &

Мы сталкиваемся с проблемой, связанной с вызовом функции, переданной в директиву, с использованием амперсанда ‘&’ в функции ссылок нашей директивы.

Кажется, функция вызывается на controllerе, но в вызове не передаются аргументы. Все примеры, которые мы видели, include прохождение через создание вызова в шаблоне. Есть ли способ вызвать функцию из вашей директивы из своего шаблона, а затем сделать что-то в директиве, которая вызывает функцию controllerа, переданную в нее?

Вы передаете аргументы внутри {} s? Например, внутри функции ссылки директивы вы хотите вызвать метод следующим образом: scope.someCtrlFn({arg1: someValue});

 
 app.directive('myDirective', function() { return { scope: { someCtrlFn: '&callbackFn' }, link: function(scope, element, attrs) { scope.someCtrlFn({arg1: 22}); }, } }); function MyCtrl($scope) { $scope.ctrlFn = function(test) { console.log(test); } } 

Скрипт .

В дополнение к ответу Марка я хотел бы указать, что вы можете сэкономить несколько писем с помощью & сокращения. Это предполагает, что callback-fn , указанный в вашем HTML, существует как scope.callbackFn в вашей области. Все остальное по-прежнему остается прежним, поэтому есть всего две строки для изменения. Я сохранил версию Марка в качестве комментариев, так что вы сможете легко разглядеть разницу.

 
 app.directive('myDirective', function() { return { scope: { callbackFn: '&' }, //scope: { someCtrlFn: '&callbackFn' }, link: function(scope, element, attrs) { scope.callbackFn({arg1: 22}); //scope.someCtrlFn({arg1: 22}); }, } }); function MyCtrl($scope) { $scope.ctrlFn = function(test) { console.log(test); } } 
  • получить исходный элемент из ng-click
  • AngularJS - Директивы против controllerов
  • Директива AngularJS, связывающая функцию с несколькими аргументами
  • Переменные привязки от Service / Factory to Controllers
  • Связь с компилятором и controllerом
  • Понимание опции transclude определения директивы?
  • Как реализовать ng-изменение для пользовательской директивы
  • Форма перехода к директиве
  • Как установить динамический controller для директив?
  • Почему свойство «replace» устарело в директивах AngularJS?
  • Можете ли вы изменить templateUrl на лету?
  • Interesting Posts

    Как клиентские приложения знают, как использовать IPv4 или IPv6?

    Как преобразовать шестнадцатеричную строку в шестнадцатеричный номер

    По ненаписанным параметрам для функций C ++

    Фабричный, абстрактный заводский и заводской метод

    Текст на ЖК-дисплее не выглядит резким

    Где я могу найти действительно старые версии Firefox?

    API против Webservice

    Есть ли способ пропустить меню «Пуск» и перейти прямо к рабочему столу (без отключения современного пользовательского интерфейса)?

    Могу ли я безопасно заряжать свой ноутбук нестандартным зарядным устройством стороннего производителя?

    Как найти источник намерений в Android?

    Что такое процесс «Прерывания системы» в Windows?

    Пакетные файлы: как читать файл?

    История команд?

    Почему у explorer.exe установлено установленное соединение с сервером Microsoft?

    Amazon EC2, mysql прерывает запуск, потому что InnoDB: mmap (x bytes) не удалось; errno 12

    Давайте будем гением компьютера.