【问题标题】:Access Angular component property/ function inside callback functions of anime.js在anime.js的回调函数中访问Angular组件属性/函数
【发布时间】:2020-12-05 10:39:52
【问题描述】:

我是 Js 的新手,我正在尝试创建一个简单的应用程序,我需要在动画完成后调用 Angular 组件函数。对于动画,我使用的是anime.js,我使用的是Angular 框架来创建这个应用程序。

我在 ngAfterViewInit 函数中添加了动画代码,我想在anime.js 的complete 回调中调用Angular 组件的showOptions() 函数。 但是在 complete 回调中我无法访问这个组件函数。我尝试定义组件对象 comp,然后尝试在回调函数中使用此对象来调用 showOptions 函数,但它给出了错误

无法读取未定义的属性“showOptions”

同样直接调用showOptions函数也不行。

我的代码:

ngAfterViewInit(): void {
    var textWrapper = document.querySelector('.an-2');
    textWrapper.innerHTML = textWrapper.textContent.replace(/\S/g, "<span class='letter'>$&</span>");
    anime.timeline({loop: false})
      .add({
        targets: '.an-2 .letter',
        opacity: [0,1],
        easing: "easeInOutQuad",
        duration: 2250,
        comp: this,
        delay: (el, i) => 150 * (i+1),
        complete: function (anim) {
          console.log('Completed' + anim);
          this.comp.showOptions();
        }
      });
  }

showOptions(){
   console.log('Show options called.');
}

【问题讨论】:

    标签: javascript angular callback anime.js


    【解决方案1】:

    将正常回调更改为箭头函数,如下所示:-

    ngAfterViewInit(): void {
        var textWrapper = document.querySelector('.an-2');
        textWrapper.innerHTML = textWrapper.textContent.replace(/\S/g, "<span class='letter'>$&</span>");
        anime.timeline({loop: false})
          .add({
            targets: '.an-2 .letter',
            opacity: [0,1],
            easing: "easeInOutQuad",
            duration: 2250,
            comp: this,
            delay: (el, i) => 150 * (i+1),
            complete:(anim) => {
              console.log('Completed' + anim);
              this.comp.showOptions();
            }
          });
      }
    
    showOptions(){
       console.log('Show options called.');
    }
    

    【讨论】:

    • 谢谢@Askash 它工作,没有使用“this.comp”,因为它现在代表组件对象,所以我直接使用了“this.showOptions()”。但现在我很想知道它是如何工作的,如果我想引用动漫中的某些属性,例如“持续时间”,如何做到这一点。
    • 普通函数和箭头函数有不同的词法范围。这就是它起作用的原因。
    猜你喜欢
    • 1970-01-01
    • 2016-09-08
    • 2011-11-05
    • 1970-01-01
    • 2016-09-05
    • 2017-10-26
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    相关资源
    最近更新 更多