我在Vue2应用程序上工作。我注意到的是,有时我无法在我的代码中直接使用this
访问存储在data()
中的元素。我的意思是,有时我需要将this...
分配给方法中的变量以使其工作,而不是简单地通过this
引用数据元素。
我在这里创建了可复制的示例:https://codesandbox.io/s/vue-2-playground-vuex-drag-and-snap-to-tiles-this-usage-trhd72?file=/src/components/ZimModel.vue
请看addRegals()
方法。我在这个方法中到处使用this.size
,但我在控制台得到的是这个错误:
[Vue warn]:查看regalstotalnumber的回调错误:TypeError: this is undefined">
我不明白为什么有一个错误,如果我简单地引用data()
元素使用this
。要使我的代码工作,您需要取消此方法中的代码注释(并注释不工作的行)。这一切都始于将data
元素分配给变量:
var size = this.size;
我不明白为什么我需要创建一个变量并将this.size
分配给它,而不是在我的方法中显式地使用this
。同样的情况下,var tiles = this.thetiles
在相同的方法(我还需要将其分配给var,使其在此方法中工作)。
Method在watcher
中触发addRegals
。也许这里有问题?
p。请在输入字段中输入'120'作为长度,'55'作为宽度(给它几秒钟在屏幕上显示网格),然后在'Regals number'字段中输入一些数字。
在addRegals
方法中定义了一个名为getPos
的局部函数。唯一的问题是getPos
不与addRegals
共享this
。但是,当您声明变量时,它在getPos
闭包中可用。
解决方案要么是让getPos
当地lambda函数或方法。
你可以在这里阅读更多关于Javascript的内容:https://www.freecodecamp.org/news/the-complete-guide-to-this-in-javascript/.