функция внутри контроллера inAngularjs

0

У меня есть две функции 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 больше не перетаскиваются

  • 0
    Пожалуйста, оставьте больше информации. Что вы пытаетесь получить доступ в вашем контроллере? Где все соответствующие коды контроллера?

2 ответа

0
Лучший ответ

Попробуйте объявить функции drag_start и drag_stop в области. Также на html вам нужно указать что-то ниже: ondragstart = "angular.element(document.getElementById('xyz')). Scope(). Drag (event)" Это, безусловно, вызовет метод перетаскивания, который вы определили в контроллере, xyz представляет id элемента html, который нужно перетащить.

  • 0
    это работает, но мой 'xyz' является переменной области видимости, поэтому, когда я делаю это в своем HTML: ondragstart = 'angular.element (document.getElementById ({{ownInst.org._id}})). scope (). drag_start (событие ) ', javascript не распознал ownInst.org._id
  • 0
    Присвойте идентификатор вашему элементу HTML LI, как показано ниже: li (id = "xyz" ng-repeat = "ownInst in ownInsts", draggable = 'true', ondragstart = 'document.getElementById (' xyz ')). Scope‌ () .drag_start (событие)), дайте мне знать, если это работает для вас
Показать ещё 1 комментарий
0

Я предполагаю, что вы использовали директивы "ng" на стороне HTML, поэтому регулярные функции не работают. Пожалуйста, будьте привычкой, что если вы собираетесь создавать функцию внутри контроллера, возможно, также включите в нее область.

$scope.drag_start = function(event){

}

$scope.drag_drop = function(event){

}

Это должно сделать трюк

  • 0
    Все еще не работает, возможно, потому что я использую атрибут ondragstart в HTML5,
  • 0
    Я обновил свой вопрос путем добавления HTML-кода
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню