Angularjs ondrop ondragover-未捕获引用错误:ondrop未定义-角度-html5可拖动

Angularjs ondrop ondragover-未捕获引用错误:ondrop未定义-角度-html5可拖动,angularjs,html,Angularjs,Html,我尝试用angular实现html5拖放 代码是: <div ondrop="drop(event)"></div> 这会导致错误: 未捕获引用错误:未定义删除 用'ng-click'交换'ondrop'使其工作,因此控制器中没有任何缺失 ng click是由angular本身定义的指令ondrop不属于angular的标准库。为了获得所需的功能,您需要定义一个新指令。我建议你看看这篇博文 ondrop是一个HTML属性,因此它希望给定的函数是全局的,而不是像ng cl

我尝试用angular实现html5拖放

代码是:

<div ondrop="drop(event)"></div>
这会导致错误:

未捕获引用错误:未定义删除


'ng-click'
交换
'ondrop'
使其工作,因此控制器中没有任何缺失

ng click
是由angular本身定义的指令<据我所知,code>ondrop不属于angular的标准库。为了获得所需的功能,您需要定义一个新指令。我建议你看看这篇博文
ondrop
是一个HTML属性,因此它希望给定的函数是全局的,而不是像
ng click
这样的角度指令,它希望回调在
$scope
上发布。您可以通过连接函数来使用非角度事件,这些函数在事件中触发到您的作用域。在这种情况下:

ondrop='angular.element(document.getElementById("Id of element with ngController,or ngView(if you use router)")).scope().drop(event)' 
在这里,我修改了W3中的拖放示例:

#第1部分,第2部分{
浮动:左;
宽度:100px;
高度:35px;
利润率:10px;
填充:10px;
边框:1px纯黑;
}
var-app=angular.module(“myApp”,[]);
app.controller(“myCtrl”,函数($scope){
$scope.allowDrop=功能(ev){
ev.preventDefault();
}
$scope.drag=函数(ev){
ev.dataTransfer.setData(“文本”,ev.target.id);
}
$scope.drop=功能(ev){
ev.preventDefault();
var data=ev.dataTransfer.getData(“文本”);
ev.target.appendChild(document.getElementById(数据));
}
});

是否有办法将函数置于全局范围内?那么是
$rootscope
吗?我相信是
$window.myGlobalFunction
?谢谢。这篇博文正是我所需要的。仅找到此
getElementById(..).scope()
advices,这对b/c没有帮助。除非您在调试模式下运行应用程序,否则范围是
未定义的。最后我写了我自己的指令,针对博客文章中的指令。
ondrop='angular.element(document.getElementById("Id of element with ngController,or ngView(if you use router)")).scope().drop(event)'