为什么我不能直接使用"this"访问 data()?



我在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/.

最新更新