2015-09-12 91 views

回答

1

ondrop是一個HTML屬性,因此,預計給定函數是全球性的,而不是角指令,如ng-click其預計回調將在$scope公佈。

+0

有沒有把功能對全球範圍內的方法嗎?那麼它會成爲'$ rootscope'嗎? – Stefan

+0

我相信它會是'$ window.myGlobalFunction'? – LoremIpsum

0

您可以通過連接函數來使用非角度事件,這些函數會在該事件中觸發您的範圍。在這種情況下:

ondrop='angular.element(document.getElementById("Id of element with ngController,or ngView(if you use router)")).scope().drop(event)' 

在這裏,我修改了阻力,並從W3Schools的下降例如:

<!DOCTYPE html> 
 
    <html> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script> 
 
<style> 
 
#div1, #div2 { 
 
    float: left; 
 
    width: 100px; 
 
    height: 35px; 
 
    margin: 10px; 
 
    padding: 10px; 
 
    border: 1px solid black; 
 
} 
 
</style> 
 
    <body ng-app="myApp"> 
 

 
     <div data-ng-controller="myCtrl" id="myContrId"> 
 
    <div id="div1" ondrop='angular.element(document.getElementById("myContrId")).scope().drop(event)' ondragover='angular.element(document.getElementById("myContrId")).scope().allowDrop(event)'> 
 
     <img src="https://diethelper.xyz/DHadmin/images/logo2w.png" draggable="true" ondragstart='angular.element(document.getElementById("myContrId")).scope().drag(event);' id="drag1" width="88" height="31"> 
 
    </div> 
 

 
    <div id="div2" ondrop='angular.element(document.getElementById("myContrId")).scope().drop(event)' ondragover='angular.element(document.getElementById("myContrId")).scope().allowDrop(event)'></div> 
 
    </div> 
 
     <script> 
 
     var app = angular.module("myApp", []); 
 
     app.controller("myCtrl", function($scope) { 
 
      $scope.allowDrop = function(ev) { 
 
      ev.preventDefault(); 
 
      } 
 

 
      $scope.drag = function(ev) { 
 
      ev.dataTransfer.setData("text", ev.target.id); 
 
      } 
 

 
      $scope.drop = function(ev) { 
 
      ev.preventDefault(); 
 
      var data = ev.dataTransfer.getData("text"); 
 
      ev.target.appendChild(document.getElementById(data)); 
 
      } 
 
     }); 
 
     </script> 
 

 
    </body> 
 

 
    </html>

相關問題