搞了一晚上,才发现是这个原因,我在局部组件需要一堆来自ajax获得的数据,也就是外部的全局变量,由于vue不熟悉,我搞了很久,重点代码:
var outdoor = {
template: outdoor_template,
data() {
alert(this.activities)
return {
activity: this.activities,
findImg: $('.act-item-text').find('.image-wrapper>img').length > 0,
findImgSrc: $('.act-item-text').find('.image-wrapper>img').attr('src')
}
},
mounted() {
$('.act-item-text').find('.image-wrapper>img').hide()
},
};
这是局部组件,中间alert会弹出undefined,而如果去掉this直接变为null,不过两者都是数据变空的问题,所以我该如何获得外部的数据,我试了一下,好像在全局组件也不能拿到js全局变量,就差这个了,差点就重构代码了。。。求解!
其实我辗转了这么久,就是想在上面的outdoor_template里得到全局组件的数据,他数据是ajax获得的,那应该怎么搞?props的话看了官方教程和参考网上其他文章,好像都是new Vue('child',...)这样的,这样不就一定要手写一个<child></child>出来了不是吗?我在outdoor_template里写了v-for渲染,需要获得页面刚加载获得的数据(list)不要笑话我了哭QAQ
同意 @vimac 的说法:你需要系统学习一下 vue。
可以看生命周期相关的。
再来说
this.activities
和activities
的区别。outdoor.data()
这样调用就是outdoor
对象。activities
就是在执行环境的上下文开始找了,基于你提供的代码肯定是 global 了,算是等价于window.activities
。为什么说算是呢?因为如果你全局没有的话
activities
会报错,window.activities
不报错。最后说说 Vue 一般应该怎么做。