Javascript ondragstart、ondragover、onstart-$scope未定义

Javascript ondragstart、ondragover、onstart-$scope未定义,javascript,angularjs,drag-and-drop,angularjs-digest,Javascript,Angularjs,Drag And Drop,Angularjs Digest,我的任务是使用angular处理丢弃的文本。我不断收到此错误$scope未在拖放事件中定义。你知道怎么解决这个问题吗 我已经研究了角度拖放库。它们不允许对简单文本进行拖放。它们中的大多数都使用列表。让我知道是否有一个适用于此任务 这是普朗克: [http://plnkr.co/edit/egKL13hsHka6RiX4UfSS?p=preview][1] 这是控制器: var app = angular.module("test", []); app.controller('testCtrl'

我的任务是使用angular处理丢弃的文本。我不断收到此错误
$scope未在拖放事件中定义
。你知道怎么解决这个问题吗

我已经研究了角度拖放库。它们不允许对简单文本进行拖放。它们中的大多数都使用列表。让我知道是否有一个适用于此任务

这是普朗克:

[
http://plnkr.co/edit/egKL13hsHka6RiX4UfSS?p=preview
][1]

这是控制器:

var app = angular.module("test",  []);
app.controller('testCtrl', ['$scope',function  ($scope) {
   $scope.nouns = ['guitar'];
   $scope.verbs = ['play'];
   $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");
        if(ev.target.id =='verb' && $scope.verbs.indexOf(data) != -1){
            ev.target.appendChild(document.getElementById(data));
        }
        else{
            alert(data + ' is not a ' + ev.target.id +'. Try again');
        }            
    };      
  }]);

$scope
对象在“外部角度上下文”中不可用。 每当您想在JavaScript(angular world之外)中访问angular scope时,您都需要通过获取该元素的DOM来获取的
scope
,然后像
angular.element(document.getElementById('testApp'))
一样访问它的作用域,它只是主体的作用域


参考此内容可访问角度上下文之外的范围。

基于@pankaj parkar答案的较短范围:

<div draggable="true" ondrag="angular.element(this).scope().on_drag(event)"></div>


在html中使用的是
$scope。拖动
。您不需要
$scope
。只需使用
拖动($event)
。现在它显示“未捕获引用错误:未定义拖动,未定义allowDrop”。对不起,我太傻了。你不能像现在这样做。i、 e.不能将$scope函数放在常规属性中。您必须使用
ng-
版本。而且没有任何拖放事件。你需要使用一些我已经研究过的类似ng Dragable的库。我找不到一个允许拖放简单文本的。它们都与列表或Html元素一起工作。如果用
text
元素包围文本,那么它将是一个Html元素,也许您可以使用ng Dragable library?感谢您回答我的问题question@kumaro很高兴能帮助您。如果您使用指令执行此操作,将会更加优雅。。