2016-06-02 13 views
0

Ich habe zwei Funktionen drag_drop und drag_start, innerhalb dieser Funktionen habe ich einige Daten von einem Controller-Bereich eingegeben. Mein Code ist somthing wie dieFunktion innerhalb des Controllers inAngularjs

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   
} 

Controller-Code:

 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') 

das Problem ist, wenn ich in der Steuerung meine beiden Funktionen setzen meine HTML-Elemente nicht mehr ziehbar

+0

Bitte posten Sie weitere Informationen. Auf was möchten Sie in Ihrem Controller zugreifen? Wo ist der relevante Controller-Code? – Clint

Antwort

0

Versuchen erklärt die Funktionen DRAG_START und drag_stop in ihrem Umfang den Trick. Auch in HTML müssen Sie etwas wie unten angeben ondragstart = "angle.element (document.getElementById ('xyz')). Scope(). Ziehen (Ereignis)" Dies würde sicherlich die Ziehmethode aufrufen, die Sie definiert haben Der Controller Dabei steht xyz für die ID des zu ziehenden HTML-Elements.

+0

es funktioniert, aber meine 'xyz' ist eine Scope-Variable, so, wenn ich dies in meinem HTML: ondragstart = 'eckigen.element (document.getElementById ({{ownInst.org._id}})). scope(). drag_start (event) ', javascript hat ownInst.org._id nicht erkannt –

+0

Geben Sie die ID zu Ihrem HTML-LI-Element wie folgt: li (id = "xyz" ng-repeat = "EigeneInstanz in EigeneInstanzen", Ziehbare =' Wahr ', ondragstart = 'document.getElementById (' xyz ')). scope() .drag_start (event)), lass es mich wissen, wenn es für dich funktioniert – Nishita

+0

Es funktioniert Danke –

0

Ich gehe davon aus, dass Sie 'ng' directi verwendet haben Ves auf der HTML-Seite, deshalb funktionieren reguläre Funktionen nicht. Bitte seien Sie eine Gewohnheit, wenn Sie eine Funktion innerhalb eines Controllers erstellen, könnte auch einen Bereich hineinlegen.

$scope.drag_start = function(event){ 

} 

$scope.drag_drop = function(event){ 

} 

Dies sollte

+0

Immer noch nicht funktioniert, vielleicht weil ich das Ondragstart-Attribut von HTML5 verwenden, –

+0

Ich aktualisierte meine Frage von Addin HTML-Code –

+0

@YoussefKorchi, ich bin nicht wirklich vertraut mit dem Drag & Drop von HTML5, aber ich sah eine native AngularJS für Sie. https://github.com/logicbomb/lvlDragDrop und seine Demo - http://logicbomb.github.io/ng-directives/drag-drop.html –

Verwandte Themen