我有两个函数drag_drop和drag_start,在这些函数中我从控制器作用域中获取了一些数据。 我的代码就像那样
function drag_start(event) {
event.dataTransfer.dropEffect = "move";
event.dataTransfer.setData("text", event.target.getAttribute('id'));
}
function drag_drop(event) {
// here I want to use $scope from a controller
}
控制器代码:
institutionController.controller('institutionController',function
$http.get('/myResponses').then(function(myres) {
$scope.myRps=myres.data;
// I want to use $scope.myRps when I drag and drop an element inside a div
HTML code:
ul(ng-hide="siwtchCI",class="list-inline")
li(ng-repeat="ownInst in ownInsts",draggable='true',ondragstart='drag_start(event)')
a(class="btn btn-default btn-org" ,role="button") {{ownInst.org.name}}
#drop_zone(ondrop='drag_drop(event)', ondragover='return false')
问题是当我将两个函数放在控制器中时,我的html元素不再可拖动
答案 0 :(得分:0)
我假设您使用过' ng' HTML方面的指令,这就是常规功能不起作用的原因。请养成一个习惯,如果要在控制器内部创建一个函数,也可以在其中放入一个范围。
$scope.drag_start = function(event){
}
$scope.drag_drop = function(event){
}
这应该可以解决问题
答案 1 :(得分:0)
尝试在范围内声明函数drag_start和drag_stop。 另外在html上你需要指定如下的内容 ondragstart =" angular.element(的document.getElementById(' XYZ&#39))。范围()拖动(事件)&#34。 这肯定会调用您在控制器中定义的拖动方法 其中xyz表示要拖动的html元素的id。