У меня есть две функции 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:
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 больше не перетаскиваются
Попробуйте объявить функции drag_start и drag_stop в области. Также на html вам нужно указать что-то ниже: ondragstart = "angular.element(document.getElementById('xyz')). Scope(). Drag (event)" Это, безусловно, вызовет метод перетаскивания, который вы определили в контроллере, xyz представляет id элемента html, который нужно перетащить.
Я предполагаю, что вы использовали директивы "ng" на стороне HTML, поэтому регулярные функции не работают. Пожалуйста, будьте привычкой, что если вы собираетесь создавать функцию внутри контроллера, возможно, также включите в нее область.
$scope.drag_start = function(event){
}
$scope.drag_drop = function(event){
}
Это должно сделать трюк