Javascript $rootScope.$broadcast来自角度指令';链接';

Javascript $rootScope.$broadcast来自角度指令';链接';,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我试图从我的角度指令内部广播一些数据。指令。我收到未定义的错误的无法读取属性$broadcast。我试图从指令向控制器广播数据的方式是否存在某种问题 angular.module('myapp').directive("fileread", function (ServerRequest, $sessionStorage, $rootScope) { return { scope: { myData: '=', opts: '=' },

我试图从我的角度指令内部广播一些数据。指令。我收到未定义的
错误的
无法读取属性$broadcast。我试图从指令向控制器广播数据的方式是否存在某种问题

    angular.module('myapp').directive("fileread", function (ServerRequest, $sessionStorage, $rootScope) {
  return {
    scope: {
      myData: '=',
      opts: '='
    },
    link: function ($scope, $elm, $attrs, $rootScope) {
      console.log($scope)
      console.log('fileread before',$scope.myData,$scope.opts)
      $elm.on('change', function (changeEvent) {
        console.log('directive');
        var reader = new FileReader();
        console.log(reader)
        reader.onload =function (evt) {
          $scope.$apply(function () {
            var data = evt.target.result;
            console.log('fileread scope apply')

            var workbook = XLSX.read(data, {type: 'binary'});
            ------------PROBLEM IS BELOW HERE-------------
            $scope.broadcastfilename = data; 
            $rootScope.$broadcast('filenameforupload', '$scope.broadcastfilename');
            console.log('passed broadcast');
            -------------AND ABOVE HERE--------------------

            var headerNames = XLSX.utils.sheet_to_json(
                                workbook.Sheets[workbook.SheetNames[0]],
                                { header: 1 }
                              )[0];

            var importedData = XLSX.utils.sheet_to_json( workbook.Sheets[workbook.SheetNames[0]]);
            console.log(headerNames,workbook);
            console.log(importedData)

            $sessionStorage.headerNames  = headerNames;
            $sessionStorage.importedData = importedData;
            // addRows(data);
            $elm.val(null);
            //this is where we add the new data to the existing data
            var query = {
              patients: importedData,
              coverKey: $sessionStorage.practiceLogged.coverKey
            }

          });
        };
        reader.readAsBinaryString(changeEvent.target.files[0]);
      });
    }
  }
}); 
在我的控制器中,我有:

        $scope.$on('filenameforupload', function(event, args) {
      console.log(args, "<------------");
    });
$scope.$on('filenameforupload',函数(事件,参数){

log(args,“从
链接
函数中删除
$rootScope
参数,这将终止指令工厂函数中注入的
$rootScope
依赖项的存在