从指令控制器到控制器的角度共享数据

Angular share data from directive controller to controller

本文关键字:共享 数据 指令控制器 控制器      更新时间:2023-09-26

我想知道是否有任何方法可以在没有事件的情况下将数据从指令控制器共享到控制器。假设我有:

.directive('someHandler', function () {
    return {
      controller: function () {
        this.users = [];
      }
    }
  })

这是家长指令,负责对子女指令沟通。我希望每次让我们说这个数组更改以告知主控制器。比如"="的功能;

这是我

的想法,希望它能奏效。尝试使用指令的控制器

.directive('someHandler', function () {
    return {
     //...previous arguments
     controller: function ($scope, $element, $attrs) {
            $scope.YourFunction = function () {
               //Your code
            }
    }
  });

然后打电话给$scope。控制器中的 YourFunction()。

加法

如果要使用父指令中的函数,则必须在子指令中包含 require 参数。通过这种方式,您可以建立层次结构关系并启用它们之间的通信。

之后,您必须使用链接函数从父控制器调用该函数。

在您的情况下,子指令将如下所示:

.directive('childsomeHandler', function () {
    return {
     //...previous arguments
     require:"^someHandler", //here is inheritance to make communication between child and parent diretctive
   link: function (scope, element, attrs, someHandlerCtrl) {
       someHandlerCtrl.YourFunction();
    }
  });

阅读这篇文章,您将知道何时使用链接和控制器。有关更多详细信息,请阅读这篇精彩的文章:https://thinkster.io/egghead/directive-communication/

最后,我希望这对您有所帮助。