Обработка событий Enyo.js/Javascript

В настоящее время я пытаюсь создать приложение Enyo.js Drag & Drop. Я использую HTML5 Drag and Drop API изначально. Я продолжаю сталкиваться с этой ошибкой в ​​своем обработчике ondragstart. Я знаю, что правильно вызываю обработчик событий, потому что я вызываю функцию, однако при попытке установить «dataTransfer.setData()» возникает ошибка. Ошибка, которую я получаю,

TypeError: undefined не является объектом (оценка «inEvent.dataTransfer.setData»)

Я не понимаю, почему, пожалуйста, помогите.

     name: "ObjectBox",
     kind: Control,
     components: [
         {
             content: "Things im trying to move/listen to"
         },
         {
             kind: Square,
             ondragstart: "dragStart"
         },
         {
             kind: Circle,
             events: {
                ondragstart: "dragStart"
              }
         },
         {
             kind: DropTarget,
             ondrag: "drag",
             ondrop: "drop"
         }
     ]

Вышеприведенный код показывает, как я устанавливаю объекты (объекты имеют возможность перетаскивания: true) и как я обрабатываю события.

Ниже кода показано, как я обрабатываю события

dragStart: function(inEvent) {
    console.log("Started");
    console.log(inEvent);
    inEvent.dataTransfer.setData("text", inEvent.target.id); // this where I get error

},
drag: function(inEvent) {
    console.log("Dragging");
    inEvent.preventDefault();
},
drop: function(inEvent) {
    console.log("Dropped");
    inEvent.preventDefault();
    var data = inEvent.dataTransfer.getData("text");
    inEvent.target.appendChild(document.getElementById(data));
}

person Nikki Rae    schedule 10.05.2018    source источник


Ответы (1)


Первый аргумент обработчиков событий Enyo — sender, второй параметр — event. Попробуйте добавить заполнитель для первого параметра и посмотрите, сможете ли вы получить доступ к объекту события по второму параметру.

Подробнее см. здесь: http://enyojs.com/docs/latest/developer-guide/getting-started/event-handling.html

person Pre101    schedule 14.05.2018
comment
Я пробовал это, мне кажется, что для передачи данных требуется объект. inEvent не является объектом, но я просто не могу понять, почему? - person Nikki Rae; 15.05.2018