2016-09-11 1 views
1

Ich arbeite an einem Prototyp, der Kendo UI Pro verwendet. Es wird stark die Verwendung der TreeListView und Drag & Drop erfordern. Ich musste einen benutzerdefinierten Ablageort erstellen, der eine benutzerdefinierte Angular 1.x-Direktive verwendet. In der link Methode dieser Richtlinie bin ich an das Element unter Verwendung kendoDropTarget() gebunden. Ich hatte gehofft, dass ich mit dieser Methode das Kendo-Modell mit der verlorenen Baumreihe kostenlos bekommen würde, aber das scheint nicht der Fall zu sein (es sei denn, ich weiß einfach nicht, wo ich hinschauen soll.)Kendo-UI-Modell per Drag-and-Drop aus dem Kendo-UI-Widget holen

ich versuchte, die dataTransfer auf das Objekt gesetzt und erhalten die Informationen von MDN wie so gefunden werden:

$scope.treeListOptions = { 
    //... 
    drag: function (e) { 
    e.dataTransfer.setData('text/plain', JSON.stringify(e.source)); 
    } 
}; 

und in meiner Anweisung, so etwas wie:

app.directive('dropLoc', function() { 
    return { 
    // ... 
    link: function (scope, ele, attrs, ctrl) { 
     ele.kendoDropTarget({ 
      dragenter: function (e) { 
       var data = e.dataTransfer.getData('text/plain'); 
       console.log(data); 
      } 
     }); 
    } 
}; 

Aber der oben führt nur zu einem e.dataTransfer is undefined Fehler.

Also, meine Frage ist, wie kann ich das Modell von einem Kendo-fähigen Widget erhalten?

Muss ich eine Reihe von data- Attribute verdrahten?

Antwort

0

Ich konnte mein Problem hier umgehen, aber es scheint, als sollte es einen besseren Weg geben, dies zu tun. Ich denke, das erste Problem ist, dass ich in zwei verschiedenen Bereichen arbeite: in der Richtlinie und in der Baumstruktur. Ein Angular Newb zu sein, hilft wahrscheinlich auch nicht. =/

Da ich in der Lage war, die Drop-Ereignisse zu feuern, und das Quellende hatte die Daten, dachte ich, ich würde nur einen Angular-Dienst erstellen, um die Daten und die Quelle Tropfen Ereignis und dann auf das Ziel zu aktualisieren Ereignis fallen lassen, die neuen Daten aus dem Service ziehen. Dies funktionierte, bis ich feststellte, dass das Ziel-Drop-Ereignis vor dem Source-Drop-Ereignis auslösen würde.

Ich habe daran gearbeitet, indem ich ein neues Ereignis erstellt habe, das erst nach der Aktualisierung der Daten ausgegeben wird und vom Ziel gehört wird, um die Daten einzuholen.

Ich weiß, das ist eine ältere Bibliothek, aber ich hasse es zu denken, dass mit all seinen Schnickschnack, dass ich so hart kämpfen musste, um dies zur Arbeit zu bringen.

Verwandte Themen