在vuejs 中使用axios不能获取属性data的解决方法
axios中的this.labels,未被定义
1 | data(){ |
1 | fetchData() { |
1 | created () { |
谷歌报错:
axios==TypeError: Cannot set property ‘labels’ of undefined
解答
出错问题:
在then
这个里边的赋值方法this.followed = response.data.followed
会出现报错,什么原因呢?在Google上查了下,原来是在 then
的内部不能使用Vue的实例化的this
, 因为在内部 this
没有被绑定。
可以看下 Stackoverflow 的解释:
In option functions like
data
andcreated
, vue bindsthis
to the view-model instance for us, so we can usethis.followed
, but in the function insidethen
,this
is not bound.
So you need to preserve the view-model like (created
means the component’s data structure is assembled, which is enough here, mounted
will delay the operation more):
解决方法
1 | fetchData() { |
或者我们可以使用 ES6
的 箭头函数arrow function
,箭头方法可以和父方法共享变量 :
1 | axios.get('/static/api/form.json') |