javascript - 事件函数内的数据对象不起作用并导致未定义
问题描述
当我将对象数据放入事件中时,我有一个未定义的值。
这是我的代码:
data(){
return {
eventSources: [],
myId: 1
}
},
methods:{
myMethod(){
this.eventSources = [{
events(start,end,timezone,callback){
alert(this.myId);
axios.get(`/Something?id=${this.myId}`).then(response=>{
callback(response.data);
}).catch(error=>{console.log(error);});
}
}]
}
}
我的警报是导致的,undefined
但是当我将警报放在警报上方时this.eventSources = [{...]]
,警报的值为1
我希望有人帮助我。
解决方案
问题出在this
里面events()
实际上并不是你的 Vue 实例。您可以通过声明events
为箭头函数来修复上下文:
this.eventSources = [{
events: (start,end,timezone,callback) => {
alert(this.myId);
}
}]
new Vue({
el: '#app',
data() {
return {
eventSources: [],
myId: 1
};
},
methods: {
myMethod() {
this.eventSources = [{
events: (start,end,timezone,callback) => {
alert(this.myId);
}
}]
this.eventSources[0].events(0, 1, 'UTC', data => console.log(data))
}
}
})
<script src="https://unpkg.com/vue@2.5.16"></script>
<div id="app">
<button @click="myMethod">Click</button>
</div>
推荐阅读
- c# - 一种意外的加密和解密方式
- pdf - 使用 rst2pdf 自动将文本内容拟合到页面
- javascript - 制作一个带有下拉菜单的导航栏,而不是垂直显示链接,而是水平显示它们
- tensorflow - Keras 中的 Concat 参差不齐的数组
- node.js - 我应该在页面上的每个组件中调用 Axios,还是在每个组件的父页面上多次调用 Axios?
- javascript - JavaScript 显示的数学答案不正确
- signalr - 通过 SignalR 将自定义类发送到 Blazor WebAssembly
- unit-testing - 检查单元测试 .net 核心 web api 中的模型状态内容
- android - 有没有办法同时在表格行内添加文本视图和按钮(使用 Android Java)
- c++ - 为什么在使用静态方法时取消引用 nullptr 而不是 C++ 中的未定义行为?