无法从指令到控制器进行通信。 AngularJS 1.6

时间:2018-08-01 06:56:05

标签: angularjs angularjs-directive angularjs-controller

我在AngularJS项目中要做的改动很小。我有一个.js文件,其中第一行包含:

(function() { 'use strict';

angular.module( 'tableData' , [] )
  .controller('TableDataController', function( $scope, $routeParams, $window, $modal, $filter, $q, toastr, $document ) { 

此文件位于指令文件夹内。我想在函数内部发出一个事件(该事件在我单击按钮时触发,该部分正在使用console.debug进行操作),该事件将被控制器捕获。

我尝试过使用$on.$emit,但是我无法使用它,所以我决定使用$rootScope.$broadcast,但是如果我在{{1}中通过了$rootScope(注入) },AngularJS会显示一条错误消息,提示未定义rootScope。

如果我在控制器中执行此操作,则不会发生。

有什么主意吗?

编辑:

如果可以将函数从调用到另一个文件,则无需触发事件。

1 个答案:

答案 0 :(得分:0)

我认为注射应该是这样的:

(function() { 'use strict';
angular.module( 'tableData' , [] )
    .controller('TableDataController', ['$rootScope', '$scope', '$routeParams',
        '$window', '$modal', '$filter', '$q', 'toastr', '$document',
        function( $rootScope, $scope , $routeParams , 
            $window , $modal , $filter , $q , toastr, $document ) {}
])})();

,您可以使用$rootScope.$broadcast