【问题标题】:How to pass a method as an argument in AlpineJS?如何在 AlpineJS 中将方法作为参数传递?
【发布时间】:2021-04-17 20:59:50
【问题描述】:

如何在 AlpineJS 中动态调用另一个方法?在下面的例子中, foo() 应该调用 bar() 来运行它接收到的方法。这不起作用,因为“未捕获的 TypeError:回调不是函数”。

foo(){
  bar(this.baz())
},
bar(method){
  method()
},
baz(){
  return 'success'
}

【问题讨论】:

    标签: alpine.js


    【解决方案1】:

    问题是你没有传递方法,你传递了方法调用的输出,试试

    foo(){
      bar(this.baz)
    },
    bar(method){
      method()
    },
    baz(){
      return 'success'
    }
    

    如果您在baz 中遇到this 问题,您可能需要这样做:

    foo(){
      bar(this.baz.bind(this))
    },
    

    【讨论】:

    • 谢谢。我什至没有尝试留下括号的原因是我必须为该方法传递一个参数。我现在这样解决它: foo(){ this.bar({method: this.baz, argument: 'success'}) }, bar(args){ m = args.method arg = args.argument m(arg) }
    猜你喜欢
    • 2011-10-14
    • 2015-08-19
    • 2010-10-16
    • 2013-08-10
    • 1970-01-01
    • 2014-08-29
    • 2015-03-10
    相关资源
    最近更新 更多