我们可以从AngularJS中另一个文件的另一个控制器调用控制器内的函数吗?

时间:2018-04-09 14:32:02

标签: javascript angularjs

我正在尝试调用另一个js文件中另一个控制器内的控制器内的函数。

我尝试了$broadcast$emit,但我认为它仅适用于同一个文件。

我有一个名为videoWidgetController的控制器,它有一个名为clickVideoWidgetListItemFromDOM的函数。

我需要从另一个名为videoController的控制器中调用它。

在此文件中,我在data-ng-click="clickVideoWidgetListItemFromDOM(video, $index)"

等点击事件上调用该函数

videoController

$scope.clickVideoWidgetListItem = function(video, index) {  
    $scope.$emit("myEvent"); *** didn't work for me ***
    $rootScope.$broadcast("myEvent", {video: video,index: index }); *** didn't work for me ***  
};

videoWidgetController

$scope.$on("myEvent", function (event, args) {
    alert(1);
    console.log(args);
   $scope.clickVideoWidgetListItemFromDOM();
});

我正如this link中提到的那样尝试,但无法得到解决方案。

我搜索了很多,但不幸的是仍然存在同样的问题。

1 个答案:

答案 0 :(得分:0)

为了进行广播发射数据传输,必须满足以下条件

  

该事件将从父控制器广播,并且   将从子控制器中侦听事件。广播方法ID   用于将数据从父母转移到孩子。

如果此层次结构不起作用,您可以按services传输数据。