代码之家  ›  专栏  ›  技术社区  ›  lnamba

Vue。js在mounted中运行代码,然后再次运行代码以实现重启功能

  •  59
  • lnamba  · 技术社区  · 7 年前

    我正在VueJS中创建一个游戏,当页面加载时,我希望启动一个方法,对外部API进行ajax调用,并创建一组数据属性。当玩家赢得这轮比赛时,我希望他们能够看到一个按钮,允许他们重新开始游戏。我正在使用 mounted() 钩子在页面加载时激发方法。

    已安装() 已安装()

    3 回复  |  直到 7 年前
        1
  •  113
  •   Bert Jeffrey Shen    7 年前

    mounted 无论你想去哪里。

    new Vue({
      methods:{
        init(){
          //call API
          //Setup game
        }
      },
      mounted(){
        this.init()
      }
    })
    

    然后可能在模板中有一个按钮重新开始。

    <button v-if="playerWon" @click="init">Play Again</button>
    

    playerWon init .

        2
  •  4
  •   RWAM    3 年前

    onMounted 钩子以调用稍后可以调用的函数:

    import {ref, onMounted, watch} from 'vue'
    
    export default {
      setup() {
        const win=ref(false)
    
        watch(win,(newVal) => {
          if(newVal) {
            init()
          }
        })
    
        onMounted(()=>{
          init()
        })
    
        function init(){
          //init
        }
      }
    }
    
    
        3
  •  1
  •   vkarpov15    5 年前

    你也可以移动 mounted 并使其成为顶级范围内的函数。这也是一个有用的技巧 server side rendering in Vue

    function init() {
      // Use `this` normally
    }
    
    new Vue({
      methods:{
        init
      },
      mounted(){
        init.call(this)
      }
    })