Javascript 在某些情况下无法重置属性,vue.js

Javascript 在某些情况下无法重置属性,vue.js,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,所以,我在Vue.js中有一个“迷你游戏”,让你“战斗”。 我试图让它在某人“死亡”后,游戏宣布胜利者,然后问你是否想再玩一次。 在那之前一切都很好,但当我试图让它在你点击后,你想再次玩,重置你的生命值和'怪物'的生命值回到100,它只是不起作用。 这是我的代码,我重置了所有内容,它运行,我放置了控制台日志,但它什么也不做: checkWinner: function() { if(this.mHp <= 0) { if (confirm('You won! Pla

所以,我在Vue.js中有一个“迷你游戏”,让你“战斗”。 我试图让它在某人“死亡”后,游戏宣布胜利者,然后问你是否想再玩一次。 在那之前一切都很好,但当我试图让它在你点击后,你想再次玩,重置你的生命值和'怪物'的生命值回到100,它只是不起作用。 这是我的代码,我重置了所有内容,它运行,我放置了控制台日志,但它什么也不做:

checkWinner: function() {
    if(this.mHp <= 0) {
        if (confirm('You won! Play again?')) {
            this.startGame();
        } else {
            this.gameIsActive = false;
        }
        return true;
    } else if (this.pHp <= 0) {
        if (confirm('You lost! Play again?')) {
            this.startGame();
        } else {
            this.gameIsActive = false;
        }
        return true;
    }
    return false;
}
checkWinner:function(){

如果(this.mHp问题出在
startGame()
函数中,您的
pHp
mHp
变量未使用
this
设置

你有:

pHp = 100;
mHp = 100;
应该是:

this.pHp = 100;
this.mHp = 100;

我通过使用
console.log()
找到了这一点,它帮助我确定
startGame()
正在启动,经过仔细检查,我发现您的数据没有正确更新。

在StartName方法中,您正在将属性设置为新值,但忘记了
这一点。
对于livespan值(pHp,mHp)

我认为在hp参数之前添加“this”后应该可以工作

    startGame: function() {
        this.gameIsActive = true;
        this.pHp = 100;
        this.mHp = 100;
    },

Ohhhhhhhhhh我明白了!谢谢!我在砸我的头。但,为什么我们必须用这个关键字来设置它们,因为我们在一个方法中?例如,若我用v-on:点击HTML页面,我就不必键入这个。@tempackt4stack我知道在模板中你们不需要
这个
,因为我假设上下文已经定义了在实例方法中,我认为原因在于区分局部变量和应用程序数据道具。不过,我会仔细检查文档以确保:)