vue怎么使用eval_javascript - 在方法内部的Vue2中使用eval()可以工作,但不能同时工作 - 堆栈内存溢出...

在Vue2组件中,遇到一个问题,需要动态调用组件内或父组件的方法。通过使用eval()函数可以实现,但在执行时触发了控制台错误提示:'this.myFunctionName(...) is not a function'。尽管实际功能执行正常,但错误仍然存在。问题在于,当直接调用方法时,控制台无误且功能执行顺利。这表明eval可能不是最佳解决方案,建议寻找替代方法,如使用Vue的$parent或$refs属性来动态访问并执行所需方法,以避免eval带来的潜在风险。
摘要由CSDN通过智能技术生成

我有一个组件内部的函数名列表,并且根据某些条件,必须从同一个地方调用不同的函数。

我无法在我的模板中创建动态函数,因此我创建了一个函数'callMethod(name)'来执行eval。 eval WORKS,即它调用我的组件中的方法,然后在父组件中调用方法。 但是,我得到一个控制台错误enter code here TypeError:this.myFunctionName(...)不是一个函数

虽然一切正常,但我不希望这些错误进入我的控制台。

如果我注释掉eval语句,并显式地输出方法,那么它也会运行,但没有错误。

如果

callMethod(name) {

eval('this.' + name + '()');

//this.clickShowDeleteAcceptForm()

console.log('did I get here?')

},

使用name ='clickShowDeleteAcceptForm'调用然后我得到它处理错误,如解释。 控制台输出不会发生。

callMethod(name) {

//eval('this.' + name + '()');

this.clickShowDeleteAcceptForm();

console.log('did I get here?')

},

如果我这称呼(显然'名称'变量是无关紧要的)那么它没有错误! 控制台输出确实发生。

[Vue w

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值