Директивы Angularjs вызывают функцию из контроллера Родителя - PullRequest
1 голос
/ 15 апреля 2020

Поскольку моя проблема была просто отсутствующим словом в коде, я напишу способ сделать это.

Я думаю, что это может помочь другим учащимся.

Список файлов :

  • приложение. js
  • mycontroller. js
  • page. html
  • mydirective. html
  • mydirectives. js

Ваше приложение. js использует поставщик маршрутов для отображения вашего вида. В этом примере у вас есть только одно представление, а именно страница. html. Эта страница контролируется mycontroller. js.

Вы хотите, чтобы на вашей странице. html отображалось несколько директив, каждая из них очень разная с точки зрения дизайна, поэтому вы поместили шаблон в мои директивы. html.

Файл, управляющий вашими директивами, - это mydirectives. js.

В нашем примере мы будем вызывать функцию, объявленную в mycontroller. js из mydirective. html. Функция просто отправит предупреждение.

app.controller('mycontroller', function ($scope) {
    $scope.sendAlert = function () {
        alert("It works !");    
    }
 });

Теперь вы определяете директивы mydirective. html. Мы просто добавим простую кнопку для примера.

... your design

<button ng-click="callFunction()" type="button">Call the function</button>

... end of your design

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

app.directive('test', function() {
    return {
        restrict: 'E',
        templateUrl: 'mydirectives.html',
        scope : {
            callFunction: "=call",
        }
    };
});

Теперь вы можете добавить директиву на своей странице. html. Это определено. Не забудьте добавить функцию;).

<test call="callFunction"></test>

Не забудьте добавить все файлы в ваш проект, и теперь он работает!

1 Ответ

1 голос
/ 15 апреля 2020

Вы забыли передать область действия test="test"?

<dir1 test="test" ng-show="showdir1">

</dir1>

<dir2 test="test" ng-show="showdir2">

</dir2>
...