我正在尝试使用Browserify使用Vue构建chrome扩展,在我的组件文件中,我试图从mounted
方法调用名为animateBackground
的组件的方法,但是在控制台上它给出了意思是错误,如何调用组件的数据和方法?
代码:
export default {
name: "app",
data() {
return {
'message': "thgdfseaw"
}
},
mounted() {
chrome.storage.local.get("bingImage", function(output) {
if (output != undefined || output != null) {
console.log(this.message);
this.animateBackground(output.bingImage.base64);
}});
},
methods: {
animateBackground(base64) {
$("#app").animate({ opacity: 0 }, "slow", function() {
$(this)
.css({ "background-image": "url(" + base64 + ")" })
.animate({ opacity: 1 });
});
}
},
components: {
AppSection
}
};
答案 0 :(得分:1)
this
不是您的vue
实例,您可以console.log
查看它是什么。有很多解决方法。其中一个你可以使用es6箭头函数语法,你也可以声明一个新变量并在回调之外分配this
然后用变量调用它,这是一个例子:
export default {
name: "app",
data() {
return {
'message': "thgdfseaw"
}
},
mounted() {
var _vue = this // << here
chrome.storage.local.get("bingImage", function(output) {
if (output != undefined || output != null) {
console.log(_vue.message); // << then access it like this
_vue.animateBackground(output.bingImage.base64);
}});
},
methods: {
animateBackground(base64) {
$("#app").animate({ opacity: 0 }, "slow", function() {
$(this)
.css({ "background-image": "url(" + base64 + ")" })
.animate({ opacity: 1 });
});
}
},
components: {
AppSection
}
};