我试图在一段时间后设置一个值。
由于某种原因,我无法在函数
中访问变量setTimeout(function() {
console.log('hello');
this.list[this.listIndex].glamour.show = true;
}, 1000);
我在VueJS方法中,我正在尝试访问VueJS模板的属性。
感谢我提前输入
答案 0 :(得分:3)
您需要创建一个引用当前对象的变量:
var self = this;
setTimeout(function() {
console.log('hello');
self.list[self.listIndex].glamour.show = true;
}, 1000);
答案 1 :(得分:0)
this
指的是您调用该函数的对象。默认情况下,它设置为窗口对象。
function sayHello () {
alert("Hello, I'm " + this.nickname + ".");
}
function make (nickname) {
return {
nickname: nickname,
sayHello: sayHello
};
}
bob = make("Bob");
jim = make("Jim");
nickname = "Window";
bob.sayHello(); /////////////// alerts "Hello, I'm Bob."
jim.sayHello(); /////////////// alerts "Hello, I'm Jim."
sayHello(); /////////////////// alerts "Hello, I'm Window."
window.sayHello(); //////////// alerts "Hello, I'm Window."
setTimeout(sayHello, 0); ////// alerts "Hello, I'm Window."
setTimeout(bob.sayHello, 0); // alerts "Hello, I'm Window."
要解决此问题,您至少有两种可能性:
// a closure
setTimeout(function () { bob.sayHello(); }, 0);
// the .bind() method
setTimeout(sayHello.bind(bob), 0);