Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取已定义方法的未定义错误_Javascript_Angular_Typescript_Drag And Drop_Interactjs - Fatal编程技术网

Javascript 获取已定义方法的未定义错误

Javascript 获取已定义方法的未定义错误,javascript,angular,typescript,drag-and-drop,interactjs,Javascript,Angular,Typescript,Drag And Drop,Interactjs,我一直在尝试使用InteractJS为angular应用程序中的按钮实现拖放功能 我想从可交互div的drop事件调用类中定义的方法,但得到以下错误 我当前的代码: HTML 我已经删减了代码,使其更具可读性。我猜测,可能在触发事件时,angular不在控制范围内,因此这个实际上是未定义的。您需要将这个关键字的含义添加到onDrop()事件处理程序中。如果没有它,语句this.methods()实际上是指事件处理程序中的methods()函数。试试下面的方法 交互('.dropzone').d

我一直在尝试使用InteractJS为angular应用程序中的按钮实现拖放功能

我想从可交互div的drop事件调用类中定义的方法,但得到以下错误

我当前的代码:

HTML

我已经删减了代码,使其更具可读性。我猜测,可能在触发事件时,angular不在控制范围内,因此这个实际上是未定义的。

您需要将
这个
关键字的含义添加到
onDrop()
事件处理程序中。如果没有它,语句
this.methods()
实际上是指事件处理程序中的
methods()
函数。试试下面的方法

交互('.dropzone').dropzone({
重叠:0.75,
接受:'.plugins',
ondrop:this.ondrop.bind(this),//在
this.methods();
this没有方法
methods()
Hi-aRvi,methods()是在类中定义的,两个interact()方法都是在ngOnInit()中定义的,看起来我过度修剪了代码。我将很快更新代码。
<div class="example-box drag-drop plugins">
        Image
</div>


<div class="dropzone">
  <h3 style="color:white;">Dropzone</h3>
</div>
interact('.dropzone').dropzone({
      overlap: 0.75,
      accept: '.plugins',

      ondrop: this.onDrop,
    })

    interact('.drag-drop')
      .draggable({
        inertia: false,
        autoScroll: true
      })
  }


  methods() {
    console.log("Inside methods()");
  }

  onDrop(event) {
    event.preventDefault();
    this.methods();
  }