У меня есть список имен функций внутри компонента, и в зависимости от определенных условий разные функции должны вызываться из одного места.
Мне не удалось создать динамическую функцию в моем шаблоне, поэтому я создал функцию callMethod (name), которая выполняет оценку.
Eval РАБОТАЕТ, то есть он вызывает метод в моем компоненте, который затем вызывает метод в родительском компоненте.
Тем не менее, я получаю ошибку консоли
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?')
},
если я вызову это (очевидно, переменная 'name' не имеет значения), то это работает без ошибки! Вывод на консоль действительно происходит.
[Vue warn]: Error in v-on handler: "TypeError: this.clickShowDeleteAcceptForm(...) is not a function"
found in
---> <MessagesGuest> at src/components/ManageMessages/Guest.vue
<ManageMessages> at src/components/ManageMessages/MessagesListing.vue
<App> at src/App.vue
<Root>
warn @ vue.runtime.esm.js?2b0e:619
logError @ vue.runtime.esm.js?2b0e:1874
globalHandleError @ vue.runtime.esm.js?2b0e:1869
handleError @ vue.runtime.esm.js?2b0e:1835
invokeWithErrorHandling @ vue.runtime.esm.js?2b0e:1852
invoker @ vue.runtime.esm.js?2b0e:2169
original._wrapper @ vue.runtime.esm.js?2b0e:6855
vue.runtime.esm.js?2b0e:1878 TypeError: this.clickShowDeleteAcceptForm(...) is not a function
at eval (eval at callMethod (Guest.vue?cfd3:95), <anonymous>:1:33)
at VueComponent.callMethod (Guest.vue?cfd3:106)
at click (eval at ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6235b99d-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ManageMessages/Guest.vue?