2017-05-23 1 views
1

각도 정보에서 일부 데이터를 브로드 캐스팅하려고합니다. 지시문. cannot read property $broadcast of undefined 오류가 발생합니다. 내 지침에서 컨트롤러에 데이터를 브로드 캐스트하려는 방식에 문제가 있습니까? 내 컨트롤러에서

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, "<------------"); 
    }); 

답변

1

는 지시 공장 함수 내 주입 $rootScope 의존성의 존재를 죽이고 당신의 link 기능에서 $rootScope 매개 변수를 제거합니다.