vue.js - 从数据指向方法 | VueJS
问题描述
我想从数据属性指向方法上的函数,但我无法找到正确的方法。
这是我的模板(相关部分):
<v-tooltip
left
v-for="(actionData, action) in actions"
:key="action"
>
<v-btn
fab
small
@click="actionData.func"
slot="activator"
>
<v-icon>{{ action }}</v-icon>
</v-btn>
<span>{{ actionData.alt }}</span>
</v-tooltip>
这是我的数据:
actions: {
add: {
func: () => openComponentStepper('demo'),
alt: '....',
},
build: {
func: () => this.openDialog('test'),
alt: '....'
},
adjust: {
func: () => {},
alt: '....'
},
update: {
func: () => this.openDialog('ttl'),
alt: '....'
},
},
我在名为 openDialog 的方法下有一个函数,但每次我试图从这个指针执行它时,我在数据下都会抛出这个错误:
TypeError: _this.openDialog is not a function
这是完整的数据属性:
data: () => ({
rules: {},
fab: false,
descriptionHeaders: [],
dialog: {
target: false,
title: '',
fields: [],
save: () => {},
},
ignoerdFields: ['ignore', 'monitor', 'target'],
actions: {
add: {
func: () => openComponentStepper('demo'),
alt: '....',
},
build: {
func: () => this.openDialog('test'),
alt: '....'
},
adjust: {
func: () => {},
alt: '....'
},
update: {
func: () => this.openDialog('ttl'),
alt: '....'
},
},
}),
解决方案
问题是您正在为data
. 您必须使用常规function
语法:
data: function() {
return { /*...*/ }
}
或者,现代版本:
data() {
return { /*...*/ }
}
这将this
表明您期望它指向的内容(而不是window
)。
推荐阅读
- c++ - 为什么我不能直接用 strcpy 复制 C 字符串的某个字符,而必须使用辅助字符串?
- vue.js - 在没有 vuex-persist 的情况下保留 Vuex 状态数据
- gtk - 非编译语言的构建系统
- mysql - MySQL在尝试创建过程时抛出错误“语句不完整,如果”
- ios - 如何快速创建具有特定类型别名的闭包?
- mysql - 无法调用存储过程 错误代码 1305
- unity3d - “找不到 DllAttribute”:从统一调用 .jslib 文件中的函数
- python - 用户在 numpy 中为 argsort() 定义的决胜局
- java - 未检测到加速器钛 JAVA_HOME
- flutter - 如何在颤动中自定义切换按钮