2016-08-17 45 views
0

工作在我的應用程序使用Angular1。當用戶拖拽某個文件到特定區域(div)時需要觸發一個函數。我已經嘗試過ondragenter,但是在這種情況下控制器中定義的功能是不可訪問的。強硬的,ondragenter的警報功能起作用。 onDragEnter中有沒有Angular1的替代品?或者,我怎樣才能爲相同的創建一個新的指令?onDragEnter事件沒有角

回答

1

在該項目中我的工作我已經拖放到文件輸入的例子。也許它可以幫助你。在這種情況下,我將Excel工作表導入到我的應用程序中的ui網格中。但是你可以調用任何指令。

在HTML,這是我輸入:

<label class="btn btn-default btn-file"> 
     Upload file 
    <input type="file" accept=".xls,.xlsx,.ods" fileread="" opts="vm.gridOptions" multiple="false" /> 
</label> 

這是輸入後調用指令上半年(該指令剩下的只是我的應用程序輸入邏輯):

.directive("fileread", [function() { 
return { 
    scope: { 
     opts: '=' 
    }, 
    link: function($scope, $elm, $attrs) { 
     $elm.on('change', function(changeEvent) { 

      var reader = new FileReader(); 
      //var evt = evt; 
      reader.onload = function(evt) { 
       $scope.$apply(function() { 

        var myEvent = ((window.event)?(event):(evt)); 
        //get the Element which this event is all about 

        var Element = ((window.event)?(event.srcElement):(evt.currentTarget)); 

        var data = Element.result; 

        var workbook = XLSX.read(data, { 
         type: 'binary' 
        }); 

        var data = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]]); 

該指令代碼本身是不是你的情況很重要,但要注意,我引用FILEREAD作爲輸入的屬性。

對於工作示例,請參閱本Plunker(這是我的指令的簡化版本,但它是我使用的基礎):

http://embed.plnkr.co/rYC3nd7undqJz2mr8Old/

希望它能幫助。