Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vue:何时执行传递给vm的函数。$nextTick?_Javascript_Web_Vue.js_Event Loop - Fatal编程技术网

Javascript Vue:何时执行传递给vm的函数。$nextTick?

Javascript Vue:何时执行传递给vm的函数。$nextTick?,javascript,web,vue.js,event-loop,Javascript,Web,Vue.js,Event Loop,在我看来,这个过程应该是:DataChange-->DOM Rerender-->传递给$nextTick execute的回调函数。对吗?但在下面这个简单的例子中,我无法理解 <div id='app'> {{msg}} </div> let app = new Vue({ el:'#app', data:{ msg:'message' }, mounted(){ this.$nextTick(()=>{ th

在我看来,这个过程应该是:DataChange-->DOM Rerender-->传递给$nextTick execute的回调函数。对吗?但在下面这个简单的例子中,我无法理解

<div id='app'>
  {{msg}}
</div>

  let app = new Vue({
  el:'#app',
  data:{
    msg:'message'
  },
  mounted(){
    this.$nextTick(()=>{
      this.message = 'NEW MESSAGE'
    })
  }
})

有人能告诉我下一次DOM更新的确切时间吗?

您对
的理解。$nextTick
有点不正确。当您将回调传递给
$nextTick
时,Vue将在执行回调之前等待DOM更新(由于任何未完成的数据更改)。但是,如果没有未完成的数据更改,也没有DOM更新,则会立即调用回调。诚然,对于这种行为,我们并不清楚,但您可以从中看到逻辑

似乎您希望在DOM更新时更改一个值。为此,您可以使用
更新的
生命周期挂钩

下面是一个示例,其中更改输入字段的绑定值将更新DOM,从而导致
updated
钩子触发,更新
this.msg
的值:

newvue({
el:“#应用程序”,
数据(){
返回{
味精:“foo”,
值:“文本”
}
},
更新的(){
this.msg='bar';
}
})

{{msg}}

@Archsx我不正确。另外,只有在数据更改或调用时才会触发重新加载程序。查看我的最新答案
//...
mounted(){
 this.msg = 'foo'
 axios.get('//bar.com').then(response=>{
   this.msg = response.msg
 })
 axios.get('//baz.com').then(response=>{
   this.msg = response.msg
 })
 this.$nextTick(function(){
   console.log(document.querySelector('#app').innerHTML)
 })
}