关于javascript:ondragstart,ondragover,onstart – $ scope未定义

ondragstart, ondragover,onstart - $scope is not defined

我的任务是用角度处理掉的文本。我不断地在拖放事件中得到这个错误$scope is not defined。知道怎么解决这个问题吗?

我已经研究了角度拖放库。它们不允许对简单文本进行拖放。它们中的大多数都与列表一起工作。如果有适合这个任务的

这是劫掠者:

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

这里是控制器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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(角度世界之外)中访问角度范围时,你需要通过获取该元素的DOM来获取scope,然后像angular.element(document.getElementById('testApp'))一样访问它的范围,它只是主体的范围。

工作柱塞

请参考此答案,以便访问角度上下文之外的范围。


基于@pankaj parkar答案的较短版本:

1